Vinnaren i pepparkakshustävlingen!
2018-04-16, 14:18
  #3289
Medlem
Ninjors avatar
Citat:
Ursprungligen postat av flowsed
Får ytterligare ett felmeddelande då:
'string[]' does not contain a definition for 'Contains' and no extension method 'Contains' accepting a first argument of type 'string[]' could be found (are you missing a using directive or an assembly reference?)

Kan det vara någon annanstans det är något knasigt i koden?

Skrev ihop ett exempel, du kanske kan hitta någon lösning genom att gå igenom den koden. Jag är inte på något sätt duktig på det här, men det kanske kan vara till hjälp.

Kod:
class Program
    
{
        static 
void Main(string[] args)
        {
            List<
string[]> myList = new List<string[]>();

            
//Skapar tre arrayer
            
string[] arrayOne = new string[] { "One""Two""Three" };
            
string[] arrayTwo = new string[] { "Four""Five""Six" };
            
string[] arrayThree = new string[] { "Seven""Eight""Nine" };

            
//Lägg till arrayer i myList
            
myList.Add(arrayOne);
            
myList.Add(arrayTwo);
            
myList.Add(arrayThree);

            
// Skriv i värde att söka efter
            
Console.Write("\n Find: ");
            
string keyword Console.ReadLine();

            for (
int i 0myList.Counti++)
            {
                if (
myList[i].Contains(keyword))
                {
                    
// Skriv ut arrayens innehåll
                    
foreach(var x in myList[i])
                    {
                        
Console.WriteLine(" {0}"x);
                    }
                }
            }
            
Console.WriteLine("\n [Press key to exit]");
            
Console.ReadKey();
        }
    } 

Edit: Fixade koden lite.
__________________
Senast redigerad av Ninjor 2018-04-16 kl. 14:32.
Citera
2018-04-16, 15:31
  #3290
Medlem
Ninjors avatar
På tal om vektorer förresten.
Enligt csharpskolan.se är Array = Fält.

Det korrekta borde väl ändå vara:

Array = Vektor
Field = Fält

?
Citera
2018-04-16, 17:27
  #3291
Medlem
tj.s avatar
Citat:
Ursprungligen postat av Ninjor
På tal om vektorer förresten.
Enligt csharpskolan.se är Array = Fält.

Det korrekta borde väl ändå vara:

Array = Vektor
Field = Fält

?
Array och vektor är inte samma sak. Vektor som begrepp finns inte i .Net-världen.
Citera
2018-04-16, 17:39
  #3292
Medlem
tj.s avatar
Citat:
Ursprungligen postat av Ninjor
Skrev ihop ett exempel, du kanske kan hitta någon lösning genom att gå igenom den koden. Jag är inte på något sätt duktig på det här, men det kanske kan vara till hjälp.

Kod:
class Program
    
{
        static 
void Main(string[] args)
        {
            List<
string[]> myList = new List<string[]>();

            
//Skapar tre arrayer
            
string[] arrayOne = new string[] { "One""Two""Three" };
            
string[] arrayTwo = new string[] { "Four""Five""Six" };
            
string[] arrayThree = new string[] { "Seven""Eight""Nine" };

            
//Lägg till arrayer i myList
            
myList.Add(arrayOne);
            
myList.Add(arrayTwo);
            
myList.Add(arrayThree);

            
// Skriv i värde att söka efter
            
Console.Write("\n Find: ");
            
string keyword Console.ReadLine();

            for (
int i 0myList.Counti++)
            {
                if (
myList[i].Contains(keyword))
                {
                    
// Skriv ut arrayens innehåll
                    
foreach(var x in myList[i])
                    {
                        
Console.WriteLine(" {0}"x);
                    }
                }
            }
            
Console.WriteLine("\n [Press key to exit]");
            
Console.ReadKey();
        }
    } 

Edit: Fixade koden lite.
Går att förenkla med lite lamdauttryck.
Kod:
static void Main(string[] args)
{
    var list = new List<
string[]>
    {
        new [] { 
"One""Two""Three" },
        new [] { 
"Four""Five""Six" },
        new [] { 
"Seven""Eight""Nine" }
    };

    
// Skriv i värde att söka efter 
    
Console.Write("\n Find: ");
    
string keyword Console.ReadLine();

    var 
keywordExists = list
        .
SelectMany(=> l)
        .
Any(=> == keyword);

    if (
keywordExists)
        
Console.WriteLine($"found {keyword}");

    
Console.WriteLine("\n [Press key to exit]");
    
Console.ReadKey();

https://dotnetfiddle.net/GYDrpV

Sen förstår jag inte varför man vill ha en lista på arrayer av strängar. Varför inte bara ha en lista av strängar?
Citera
2018-05-16, 17:46
  #3293
Medlem
Har en ganska så dum fråga, men vad är felet här nedan? I slutet så skriver den endast ut de siffror man förde in. Den multiplicerar inte med 365 som jag vill.

Kod:
using System;

namespace Uppgift2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hej och välkommen till mitt program!");

            Console.WriteLine("Vad heter du?");

            string myVar;

            myVar = Console.ReadLine();

            Console.WriteLine("Du heter: " + myVar);

            Console.WriteLine("Hur gammal är du?");

            string strNr = Console.ReadLine();

            int Nr = Convert.ToInt32(strNr);

            Nr = (Nr * 365);

            Console.WriteLine("Antal dagar sedan du föddes: " + strNr);

        }
    }
}

Jag har säkert tänkt helt fel här.. Någon som kan förklara vad jag gör för fel?
Citera
2018-05-16, 17:48
  #3294
Medlem
askers avatar
Citat:
Ursprungligen postat av storachefen
Jag har säkert tänkt helt fel här.. Någon som kan förklara vad jag gör för fel?
I slutet skriver du ut strNr. Kolla igenom din kod igen, så ser du att strNr aldrig ändras efter inläsningen.
Citera
2018-05-16, 17:51
  #3295
Medlem
Citat:
Ursprungligen postat av asker
I slutet skriver du ut strNr. Kolla igenom din kod igen, så ser du att strNr aldrig ändras efter inläsningen.

Haha, fan vad korkat av mig!
Tack så mycket.
Citera
2018-05-16, 20:33
  #3296
Medlem
Vad gör jag för fel här?

Kod:
using System;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isRunning = true;

            while (isRunning)
            {
                Console.WriteLine("\tVälkommen till ryggsäcken");
                Console.WriteLine("\t[1] Lägg till föremål");
                Console.WriteLine("\t[2] Skriv ut föremål");
                Console.WriteLine("\t[3] Nollställ föremål");
                Console.WriteLine("\t[4] Avsluta");
                Console.Write("\tVälj: ");
                string userChoice = Console.ReadLine();
                string userInput = "";

                if (userChoice == "1")
                {
                    Console.Write("Skriv in något: ");
                    string userInput = Console.ReadLine();
                }
                else if (userChoice == "2");
                {
                    Console.WriteLine(userInput);
                }
                else if (userChoice == "3");
                {
                    string userInput = "";
                }
                else if (userChoice == "4") ;
                {
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Välj ett värde mellan 1-4");
                }
            Console.ReadLine();
        }
    }
}

userInput ska jag väl kunna skriva om till vad jag vill i de olika stegen? Varför får jag så mycket felmeddelanden?
Citera
2018-05-16, 20:38
  #3297
Medlem
tj.s avatar
Citat:
Ursprungligen postat av storachefen
Vad gör jag för fel här?

Kod:
using System;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isRunning = true;

            while (isRunning)
            {
                Console.WriteLine("\tVälkommen till ryggsäcken");
                Console.WriteLine("\t[1] Lägg till föremål");
                Console.WriteLine("\t[2] Skriv ut föremål");
                Console.WriteLine("\t[3] Nollställ föremål");
                Console.WriteLine("\t[4] Avsluta");
                Console.Write("\tVälj: ");
                string userChoice = Console.ReadLine();
                string userInput = "";

                if (userChoice == "1")
                {
                    Console.Write("Skriv in något: ");
                    string userInput = Console.ReadLine();
                }
                else if (userChoice == "2");
                {
                    Console.WriteLine(userInput);
                }
                else if (userChoice == "3");
                {
                    string userInput = "";
                }
                else if (userChoice == "4") ;
                {
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Välj ett värde mellan 1-4");
                }
            Console.ReadLine();
        }
    }
}

userInput ska jag väl kunna skriva om till vad jag vill i de olika stegen? Varför får jag så mycket felmeddelanden?
Vad sägs om att faktiskt läsa felmeddelandena du får? De brukar vara ganska självtalande. Du deklarerar userInput utanför dina if-satser. Därefter deklarerar du ytterligare en variabel med samma namn i den första if-satsen. Det fungerar inte. Om du vill tilldela den något värde så får du ta bort variabeldeklarationen. Alltså userInput = Console.ReadLine(); istället för string userInput = Console.ReadLine();. Vidare förstår jag inte varför du har semikolon efter vissa av dina if-satser.
Citera
2018-05-16, 20:42
  #3298
Medlem
Citat:
Ursprungligen postat av tj.
Vad sägs om att faktiskt läsa felmeddelandena du får? De brukar vara ganska självtalande. Du deklarerar userInput utanför dina if-satser. Därefter deklarerar du ytterligare en variabel med samma namn i den första if-satsen. Det fungerar inte. Om du vill tilldela den något värde så får du ta bort variabeldeklarationen. Alltså userInput = Console.ReadLine(); istället för string userInput = Console.ReadLine();. Vidare förstår jag inte varför du har semikolon efter vissa av dina if-satser.

De felmeddelanden jag fick var lite otydliga för mig som precis börjat med detta!
Men jag uppskattar verkligen din feedback, och du har naturligtvis rätt!

Nu fungerar den lite bättre, nu har jag bara problem att få ryggsäcken att skriva ut userInput på val 2. Får inte något svar alls där utan den loopar till start igen bara.

Kod:
using System;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isRunning = true;

            while (isRunning)
            {
                Console.WriteLine("\tVälkommen till ryggsäcken");
                Console.WriteLine("\t[1] Lägg till föremål");
                Console.WriteLine("\t[2] Skriv ut föremål");
                Console.WriteLine("\t[3] Nollställ föremål");
                Console.WriteLine("\t[4] Avsluta");
                Console.Write("\tVälj: ");
                string userChoice = Console.ReadLine();
                string userInput = "";

                if (userChoice == "1")
                {
                    Console.Write("Skriv in något: ");
                    userInput = Console.ReadLine();
                }
                else if (userChoice == "2")
                {
                    Console.WriteLine(userInput);
                }
                else if (userChoice == "3")
                {
                    userInput = "";
                }
                else if (userChoice == "4")
                {
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Välj ett värde mellan 1-4");
                }
                Console.ReadLine();
            }
        }
    }
}   
Citera
2018-05-16, 20:48
  #3299
Medlem
tj.s avatar
Citat:
Ursprungligen postat av storachefen
De felmeddelanden jag fick var lite otydliga för mig som precis börjat med detta!
Men jag uppskattar verkligen din feedback, och du har naturligtvis rätt!

Nu fungerar den lite bättre, nu har jag bara problem att få ryggsäcken att skriva ut userInput på val 2. Får inte något svar alls där utan den loopar till start igen bara.

Kod:
using System;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isRunning = true;

            while (isRunning)
            {
                Console.WriteLine("\tVälkommen till ryggsäcken");
                Console.WriteLine("\t[1] Lägg till föremål");
                Console.WriteLine("\t[2] Skriv ut föremål");
                Console.WriteLine("\t[3] Nollställ föremål");
                Console.WriteLine("\t[4] Avsluta");
                Console.Write("\tVälj: ");
                string userChoice = Console.ReadLine();
                string userInput = "";

                if (userChoice == "1")
                {
                    Console.Write("Skriv in något: ");
                    userInput = Console.ReadLine();
                }
                else if (userChoice == "2")
                {
                    Console.WriteLine(userInput);
                }
                else if (userChoice == "3")
                {
                    userInput = "";
                }
                else if (userChoice == "4")
                {
                    Console.ReadLine();
                }
                else
                {
                    Console.WriteLine("Välj ett värde mellan 1-4");
                }
                Console.ReadLine();
            }
        }
    }
}   
Du nollsätter ju userInput till en tom sträng i början av varje iteration. Om du i första iterationen väljer 1 och skriver in Coca cola så kommer den ha hunnit bli nollsatt när du i andra iterationen väljer 2.
Citera
2018-05-24, 16:55
  #3300
Medlem
Jag håller på med ett nytt projekt som jag felsöker. Det går dock inte särskilt bra utan när jag googlar på de olika felmeddelanden som jag får. Så dyker det upp en del olika lösningar men ingen av dem verkar kunna appliceras på mitt program.
Vad innebär det att "Program.RullaTärning(Random)': not all code paths return a value"?
Samt "Variable declaration can be inlined", är det ett felaktigt errormeddelande?

Kod:
using System;
using System.Collections.Generic;
using System.Threading;

namespace ConsoleApp8
{
    class Program
    {
        // detta är en statisk metod med en int som ett returvärde
        // metoden tar en parameter i form av ett random objekt av
        // randomklassen
        static int RullaTärning(Random slumpObjekt)
        {
            // här ska du skapa kod som slumpar fram ett tal
            // mellan 1 och 6, så att metoden "rullar" en 6 sidig
            // tärning när vi kallar på den

            // metoden ska sedan returnera det rullade värdet
        }

        static void Main()
        {
            Random slump = new Random(); // Skapar en instans av klassen Random för vårt slumptal
            List<int> tärningar = new List<int>(); // listan för att spara våra rullade tärningar

            Console.WriteLine("\n\tVälkommen till tärningsgeneratorn!");

            bool kör = true;
            while (kör)
            {
                Console.WriteLine("\n\t[1] Rulla tärning\n" +
                    "\t[2] Kolla vad du rullade\n" +
                    "\t[3] Avsluta");
                Console.Write("\tVälj: ");
                int val;
                int.TryParse(Console.ReadLine(), out val);

                switch (val)
                {
                    case 1:
                        Console.Write("\n\tHur många tärningar vill du rulla: ");
                        bool inmatning = int.TryParse(Console.ReadLine(), out int antal);

                        if (inmatning)
                        {
                            for (int i = 0; i < antal; i++)
                            {
                                // här kallar vi på metoden RullaTärning
                                // och sparar det returnerade värdet i 
                                // listan tärningar
                                tärningar.Add(RullaTärning(slump));
                            }
                        }
                        break;
                    case 2:
                        int sum = 0; // Skapar en int som ska innehålla medelvärdet av alla tärningsrullningar.
                        if (tärningar.Count <= 0)
                        {
                            Console.WriteLine("\n\tDet finns inga sparade tärningsrull! ");
                        }
                        else
                        {
                            Console.WriteLine("\n\tRullade tärningar: ");
                            foreach (int tärning in tärningar)
                            {
                                Console.WriteLine("\t" + tärning);
                            }
                            Console.WriteLine("\n\tMedelvärdet på alla tärningsrull: " + sum); // Här ska medelvärdet skrivas ut
                        }

                        break;
                    case 3:
                        Console.WriteLine("\n\tTack för att du rullade tärning!");
                        Thread.Sleep(1000);
                        kör = false;
                        break;
                    default:
                        Console.WriteLine("\n\tVälj 1-3 från menyn.");
                        break;
                }
            }
        }
    }
}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback