Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk

hjälp med c#kod

Jag jobbar med en metod där användaren ska kunna välja mellan att slumpa en hund eller lägga till en egen hund. Nu har jag fastnat och är tacksam för all hjälp jag kan få! Probelemet är att jag inte fattar hur jag ska göra för att användarens inmatning ska sparas i den privata klassen. Jag får hela tiden felmedelandet:
"Severity Code Description Project File Line Suppression State
Error CS7036 There is no argument given that corresponds to the required formal parameter '_sitt' of 'Hund.Hund(string, double, string, string, double, double, bool)' ConsoleApp14 C:\Users\jenny\source\repos\ConsoleApp14\ConsoleApp14\Program.cs 159 Active
"

public void add_hund()
{
Random random = new Random(); // Skapar ett objekt från klassen Random för att generera slumpade nummer
int val;
do
{
Console.WriteLine("Du valde alternativ 1 i huvudmenyn. n/Välj nu mellan att slumpa in en hund från vår hundlista eller mata in din egen.");
Console.WriteLine("Du väljer alternativ genom att mata in respektive siffra:");
Console.WriteLine("1. Slumpa fram hund");
Console.WriteLine("2. Lägg till egen hund");
Console.WriteLine("3. Gå tillbaka till huvudmenyn");
val = int.Parse(Console.ReadLine());

if (val == 1)
{
for (int i = 0; i < Hundar.Length; i++) // Loopar vektorn
{
if (Hundar[i] == null) // Lägger endast till där det är tomt
{
int rnd = random.Next(1, hund_list.Count); // Skapar en slumpad siffra mellan 1 och listans längd,
Hundar[i] = hund_list[rnd];
}
}
break;
}
else if (val == 2)
{
Console.WriteLine("\n Skriv in namn, ålder, köns, ras, tid då du vill hämta din hund samt om den kan sitta eller inte. Skriv '0' för att avbryta:");
Console.Write(" Namn: ");
string namn = Console.ReadLine(); // Användaren matar in namn
if (namn == "0") // Skriver användaren "0" går man tillbaka till första menyn i add_Hund()
break;
else
{
Console.Write(" Ålder: ");
double ålder = double.Parse(Console.ReadLine());
Console.Write(" Kön (Välj mellan tik eller hane): ");
string kön = Console.ReadLine();
Console.WriteLine("Ras: ");
string ras = Console.ReadLine();
Console.WriteLine("Digital tid för hämtning: ");
double hämtning = double.Parse(Console.ReadLine());
if (hämtning < 8.00 && hämtning > 19.00)
{
Console.WriteLine("Hämtning sker mellan våra öppettider 8.00 till 19.00, var god skriv in ny tid: ");
double tid2 = double.Parse(Console.ReadLine());
}
else
{
hämtning = double.Parse(Console.ReadLine());
}
Console.WriteLine("Kan sitta(ja/nej");
string svar = Console.ReadLine();
if (svar == "ja" || svar == "Ja")
{
bool sitt = true;
}
else
{
bool sitt = false;
}

//har problem och vet ej hur jag ska lösa detta...

var Hundar = new Hund(namn, ålder, kön, ras, hämtning, sitt);

for (int i = 0; i < 20; i++)
{
if (Hundar[i] == svar) ;
}
foreach (var Hund in Hundar) ;
{
Hundar[i] = (namn, ålder, kön, ras, hämtning, sitt);
Console.Clear();
}
}

} while (val < 0 && val > 3) ;
} while (true);
}

Permalänk
Medlem

@jillolakaka:

Välkommen till programmeringsforumet!

Använd gärna dessa specialtaggar för att formatera koden, det blir enklare för oss att läsa då.

[code]
//Din kod här
[/code]

Då ser det ut på detta vis.

public void add_hund() { Random random = new Random(); // Skapar ett objekt från klassen Random för att generera slumpade nummer int val; do { Console.WriteLine("Du valde alternativ 1 i huvudmenyn. n/Välj nu mellan att slumpa in en hund från vår hundlista eller mata in din egen."); Console.WriteLine("Du väljer alternativ genom att mata in respektive siffra:"); Console.WriteLine("1. Slumpa fram hund"); Console.WriteLine("2. Lägg till egen hund"); Console.WriteLine("3. Gå tillbaka till huvudmenyn"); val = int.Parse(Console.ReadLine()); if (val == 1) { for (int i = 0; i < Hundar.Length; i++) // Loopar vektorn { if (Hundar[i] == null) // Lägger endast till där det är tomt { int rnd = random.Next(1, hund_list.Count); // Skapar en slumpad siffra mellan 1 och listans längd, Hundar[i] = hund_list[rnd]; } } break; } else if (val == 2) { Console.WriteLine("\n Skriv in namn, ålder, köns, ras, tid då du vill hämta din hund samt om den kan sitta eller inte. Skriv '0' för att avbryta:"); Console.Write(" Namn: "); string namn = Console.ReadLine(); // Användaren matar in namn if (namn == "0") // Skriver användaren "0" går man tillbaka till första menyn i add_Hund() break; else { Console.Write(" Ålder: "); doubleålder = double.Parse(Console.ReadLine()); Console.Write(" Kön (Välj mellan tik eller hane): "); string kön = Console.ReadLine(); Console.WriteLine("Ras: "); string ras = Console.ReadLine(); Console.WriteLine("Digital tid för hämtning: "); double hämtning = double.Parse(Console.ReadLine()); if (hämtning < 8.00 && hämtning > 19.00) { Console.WriteLine("Hämtning sker mellan våra öppettider 8.00 till 19.00, var god skriv in ny tid: "); double tid2 = double.Parse(Console.ReadLine()); } else { hämtning = double.Parse(Console.ReadLine()); } Console.WriteLine("Kan sitta(ja/nej"); string svar = Console.ReadLine(); if (svar == "ja" || svar == "Ja") { bool sitt = true; } else { bool sitt = false; } //har problem och vet ej hur jag ska lösa detta... var Hundar = new Hund(namn, ålder, kön, ras, hämtning, sitt); for (int i = 0; i < 20; i++) { if (Hundar[i] == svar); } foreach(var Hund in Hundar); { Hundar[i] = (namn, ålder, kön, ras, hämtning, sitt); Console.Clear(); } } } while (val < 0 && val > 3); } while ( true ); }

Det är ett par fel som jag ser.

Du försöker använda variabeln "sitt" men den är deklarerad som en lokal variabel inne i if-satsen innan du försöker använda den. Det betyder att koden efter inte har åtkomst till den.

Sen försöker du skapa en lista av Hundar men du skapar den genom att skapa en hund, inte en lista.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

@jillolakaka: Du har kanske redan löst det, men svarar ändå.

Console.WriteLine("Kan sitta(ja/nej"); string svar = Console.ReadLine(); if (svar == "ja" || svar == "Ja") { bool sitt = true; } else { bool sitt = false; } //har problem och vet ej hur jag ska lösa detta... var Hundar = new Hund(namn, ålder, kön, ras, hämtning, sitt);

Du deklarerar sitt innanför ett kodblock, där sista måsvingen } stängs kommer dina variabler i blocket att dö och försvinna från minnet. Läs: Variable Scopes

Ett sätt att lösa detta på är att först deklarera variabeln utanför blocken och sätta värdet innanför blocken.
Då kan du sätta ett värde som är false som är default, redan innan användaren skrivit ja och då slipper du även else blocket. Rekommenderar också att du använder incasesensetive matchning istället för att skriva ELLER.

Console.WriteLine("Kan sitta(ja/nej"); string svar = Console.ReadLine(); var sitt = false; if (svar.ToLower() == "ja") { sitt = true; } var Hundar = new Hund(namn, ålder, kön, ras, hämtning, sitt);

Ett annat sätt är att i din constructor sätta ett default värde för sitt om inget annat anges som parameter.

public Hund(string namn, double ålder, string kön, string ras, string hämtning, bool sitt = false) { // Sätt props som vanligt. }