Permalänk

Switch och felhantering

Hej,

Jag behöver få in en switch samt en felhantering(try, catch) i min kod. Någon som har ett förslag hur jag kan skriva ut det utan att det blir error?

Använder replit som editor

using System; class Program { public static void method1(){ //method 1 Console.WriteLine("Godismaskinen är aktiverad!"); } public static void PrintNumber(){ //method 2 Random numGen = new Random(); int name = numGen.Next(1,100); Console.WriteLine("Totalsumman blir" + " " + name + "kr\n"); Console.WriteLine("Tack för din order!\n"); } public static void Amount(){ //method 3 Random numGen = new Random(); int name1 = numGen.Next(1,999); Console.WriteLine("Du har lagt till" + " " + name1 + " " + "godisar i varukorgen\n"); } public static void Main (string[] args) { Console.Clear(); //Starting program Console.WriteLine("Startar upp program..."); method1(); String name = Console.ReadLine(); //Varible using to hold things int x = 0; while(true){ //Fixing, cleaning the menu Console.Clear(); //Text to show the menu Console.WriteLine("Välj det godis du är sugen på!"); Console.WriteLine("-----------------------------"); Console.WriteLine("1.Marabou"); Console.WriteLine("2.Ahlgrens bilar"); Console.WriteLine("3.Kexchoklad"); Console.WriteLine("4.Tuggummi bubbelgum"); Console.WriteLine("5.Räkna ut summan"); Console.WriteLine("6.Avsluta programmet\n"); //Getting users choice Console.WriteLine("Skriv in ditt val"); x = Convert.ToInt32(Console.ReadLine()); //Conditions to get the function of choice if (x == 1){ Console.Clear(); Amount(); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } else if (x == 2){ Console.Clear(); Amount(); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } else if (x == 3){ Console.Clear(); Amount(); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } else if (x == 4){ Console.Clear(); Amount(); Console.WriteLine("---------------------------------"); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } else if (x == 5){ Console.Clear(); PrintNumber(); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } //To exit the program else if (x == 6){ Console.Clear(); Console.WriteLine("Du har valt att avsluta programmet"); Console.WriteLine("Tryck enter för att avsluta programmet"); Console.ReadKey(); Console.Clear(); Console.WriteLine("Programmet har avslutats, välkommen åter!"); break; } //If user press number outside of choice else{ Console.Clear(); Console.WriteLine("Du gjorde inget giltigt val!\nGå tillbaka till menyn och gör ett nytt val!"); Console.WriteLine("Tryck Enter för att gå tillbaka till menyn"); Console.ReadKey(); } } } }

Permalänk
Medlem

Det går ju att sätta in detta precis var som helst egentligen så länge man har rätt syntax. Sen var man ska sätta in det beror ju lite på vad man vill göra.

I ditt fall bör du tänka "Var kan det gå fel och jag vill hantera det?". Där du känner det så bör sätta try catch. Här finns ett rätt typiskt / givet ställe du skulle vilja felhantera.

Sedan har du även ett ett väldigt givet ställe att sätta en switch på. Och jag tror du behöver läsa på lite hur Switch fungerar om du frågar!

Här har du några exempel samt lite information hur en switch fungerar samt ser ut: https://www.w3schools.com/cs/cs_switch.php

Så om du har några tankar att utgå från så skriv dessa så kan vi tar det därifrån.

Edit: Här har du lite information om try catch: https://www.tutorialsteacher.com/csharp/csharp-exception-hand...

Permalänk

Tack för info!

Jag löste felhanteringen nu:)

Men har testat att göra om de 3 sista valen till en switchmeny vilket inte fungerar.

Permalänk
Medlem
Skrivet av Ronnyponny:

Men har testat att göra om de 3 sista valen till en switchmeny vilket inte fungerar.

Varför bara de tre sista valen istället för alla val? Du får gärna vara lite mer specifik än "fungerar inte" också.

Permalänk
Medlem
Skrivet av Ronnyponny:

Tack för info!

Jag löste felhanteringen nu:)

Men har testat att göra om de 3 sista valen till en switchmeny vilket inte fungerar.

Nu när du börjat på korrekt ställe med switch-satsen så flikar jag även in som ovanstående - kör alla alternativ i switchen.

Det låter som syntax-fel - att du inte riktigt vet hur du ska skriva den.

int day = 4; switch (day) { case 1: Console.WriteLine("Monday"); break; case 2: Console.WriteLine("Tuesday"); break; case 3: Console.WriteLine("Wednesday"); break; case 4: Console.WriteLine("Thursday"); break; case 5: Console.WriteLine("Friday"); break; case 6: Console.WriteLine("Saturday"); break; case 7: Console.WriteLine("Sunday"); break; } // Outputs "Thursday" (day 4)

Detta exempel är väldigt lik din kod som du bör kunna ta inspiration från. Men istället för day ska du utvärdera en annan variabel och slutligen utföra något annat än att console-logga.

"case 7:" är samma sak som "if(day == 7) {}"