• 39 156 online
  • 1 170 975 medlemmar
  • 60 397 700 inlägg
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
Moderator
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
Moderator
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
Moderator
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
Moderator
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