Permalänk
Medlem

Hjälp med programmering C#

Hej! Jag pluggar programmering 1 och har kört fast på en inlämming. Jag kan inte för mitt liv få det att fungera.
Det här är uppgiften
Du ska i den här övningen skriva ett mer komplext program som hanterar inmatning och utskrift. Programmet är en ryggsäck som styrs genom en meny. Menyn visar tillvalen som finns för användaren.
I den här uppgiften ska vi skapa ett program. Programmet utgår från en strängvariabel som vi kan tilldela ett värde, skriva ut värdet, nollställa värdet och avsluta programmet. Vi behöver arbeta med en meny och en while-loop som upprepas tills användaren väljer att avsluta programmet.

Programmet ska förutom att skriva ut och visa menyn innehålla möjlighet att

Spara ett föremål i ryggsäcken, användaren ska kunna mata in en sträng under menyval 1, detta ska sparas. Du kan göra det genom att tilldela en Console.ReadLine() till strängvariabeln. Se kapitel 3, och kom ihåg att du kan tilldela och deklarera på två olika platser.
Den inmatade strängen ska kunnas skrivas ut i menyval 2.
När användaren väljer menyval 3 ska strängens värde rensas eller nollställas. Tilldela strängvariabeln ett tomt ""-värde.
Menyval 4 ska avsluta menyloopen.

Det är uppgiften och här den kod jag hittills har skrivit ut:
Det jag inte får till är meny val2 där inmatningen från meny val 1 ska sparas. Den sparas inte, om jag väljer val två så säger den "här är innehållet: 2" men i meny val ett skrev jag in banan. Hur löser jag det här? Eller finns det något bättre sätt att skriva koden på? All Hjälp uppskattas!!!

static void Main(string[] args)
{
string val = "";
bool minBool = true;

while (minBool)
{
Console.WriteLine("Välkommen till ryggsäcken!");
Console.WriteLine("[1] - Lägg till ett föremål");
Console.WriteLine("[2] - Skriv ut innehållet");
Console.WriteLine("[3] - Rensa innehållet");
Console.WriteLine("[4] - Avsluta programmet");

val = Console.ReadLine();

switch (val)
{
case "1":
Console.WriteLine("Skriv vad du vill lägga till: ");
val = Console.ReadLine();
Console.WriteLine($"\"{val}\"Har lagts till i ryggsäcken");
break;
case "2":
if (!
string.IsNullOrEmpty( val ))
Console.WriteLine($"Här är innehållet: {val}");
else
Console.WriteLine("Du har inte lagt till något i ryggsäcken");
break;

case "3":
val = "";
Console.WriteLine("Ryggsäcken har rensats");
Console.Clear();
break;

case "4":
minBool = false;
break;
default:
Console.WriteLine("Ogiltit val, försök igen");
break;

}
}
Console.WriteLine("Programmet avslutat");

}
}

}

Rubrik justerad. // MOD
Permalänk
Medlem

Hej, bara för att du ska få fundera lite :). Tycker du inte det är lite konstigt att det skrivs "här är innehållet: 2". Vad kommer "2" ifrån.

Permalänk
Medlem
Skrivet av JakeMan:

Hej, bara för att du ska få fundera lite :). Tycker du inte det är lite konstigt att det skrivs "här är innehållet: 2". Vad kommer "2" ifrån.

Jo men för att jag valde nr 2 i menyn, så jag trycker ju på två

Permalänk
Medlem
Skrivet av Vilmahej:

Jo men för att jag valde nr 2 i menyn, så jag trycker ju på två

Men 2 ska ju bara vara för att komma till innehållet i ryggsäcken, inte nödvändigtvis skrivas ut?

Permalänk
Medlem

Problemet är att du verkar använda variabeln val för både menyn och för "ryggsäcken", men det innebär ju att innehållet skrivs över varje gång du återgår till menyn. Du måste ha en separat "ryggsäck" som du sparar innehållet i och inte försöka använda en variabel för två helt olika saker.

Permalänk
Medlem
Skrivet av perost:

Problemet är att du verkar använda variabeln val för både menyn och för "ryggsäcken", men det innebär ju att innehållet skrivs över varje gång du återgår till menyn. Du måste ha en separat "ryggsäck" som du sparar innehållet i och inte försöka använda en variabel för två helt olika saker.

ja såklart!! Det har jag inte ens tänkt på! Tack!!

Permalänk

Skapa en lista som du sparar föremålen i och skriv ut listan på föremålen på case 2.