Resolved Why is my case 1 looping

Fikakakan

Member
Joined
Jul 14, 2021
Messages
5
Programming Experience
Beginner
Need some noobie help here. I've tried for a few hours to see why my case 1 is looping itself, help anyone?
Is it the while-loop?...


Case 1 is looping it self instead of moving on to case 2 3 4:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ryggsäcken
{
    class Program
    {
        static void Main(string[] args)
        {

          
            bool minBool = true;//så länge boolen är sann kommer loopen köras. Detta gör när användaren väljer "avsluta" så har jag lagt in att boolen är false som "else if", och då stängs det ner automatiskt.


          
            Console.WriteLine("Välkommen till ryggsäcken!");//Rubrik på menyn.
            Console.WriteLine("[1] - Lägg till ett föremål");//Menyval 1-text
            Console.WriteLine("[2] - Skriv ut föremålet");//Menyval 2-text
            Console.WriteLine("[3] - Rensa innehållet");//Menyval 3-text
            Console.WriteLine("[4] - Avsluta");//Menyval 4-text
            Console.WriteLine("Välj:");//Text som ber användaren att välja bland siffrorna 1-4.

            int menyVal = Convert.ToInt32(Console.ReadLine());//konverterar användarens svar till heltal från string.
            string foremal = ""; //sätter ett tomt stringvärde på föremål så att användaren kan fylla på med en egen sträng som blir värdet.

            while (minBool)//medans minBool är true, körs detta nedan inom {}.
              
            {
                switch (menyVal)
                {

                    case 1:

                        Console.WriteLine("Vad vill du lägga ner i ryggsäcken?\n");//Skriver ut och ber användaren ange vad den vill lägga ner i ryggsäcken.
                        foremal = Console.ReadLine();// lägger till användarens inmatning som värde till stringen foremal.
                        Console.WriteLine("Du la till " + foremal + ". Gör ett val i menyn:");//Skriver ut texten: Du la till + str foremal som inneh¨ler anvädarens inmatning+, tryck på enter.
                        break;

                    case 2: // när/om användaren skriver in siffran 2. Då körs nedstående {}.

                        Console.WriteLine("Detta har du i Ryggsäcken hittils: " + foremal + " " + ". \nGör ett val i menyn");//Skriver ut vad användaren matade in vid menyVal 1 (värdet i str foremal).
                        break;

                    case 3: // när/om användaren skriver in siffran 3. Då körs nedstående WriteLine mellan. Denna ska, enligt menyvalet högst upp, rensa innehållet i foremal och be användaren fylla på ryggsäcken igen.

                        Console.WriteLine("Någon har tagit innehållet i din ryggsäck! Fyll på igen genom att trycka 1" + " " + ", tryck enter.");//Skriver ut texten mellan "".
                        foremal = "";//Här nollställer jag värdet genom att ange att foremal är en tom sträng igen. Användaren kan nu därför förlja insruktionerna i ovanstående WriteLine.
                        break;

                    case 4: // när/om användaren skriver in siffran 4. text+ Programmet ska avslutas.

                        Console.WriteLine("Din ryggsäck är färdigpackad! Tryck Enter för att avsluta.");//Slutmeddelande som visas vid inmatning, efter nästa input stängs programmet ner.
                        minBool = false; //Här kan jag ange att while-loopen är false- som jag angett innan if-loopen, detta stannar hela if-loopen.
                        System.Threading.Thread.Sleep(2000);
                        break;
                        
                }
            }

        }
    }
}
 
When does the value of menyVal change?
 
You say that you've tried for a few hours but did you actually use the debugger? It seems impossible that you did but couldn't see where the problem is. You haven't explained what you're actually trying to achieve but some basic debugging should have shown that, once you hit that first case, there's no reason to stop hitting it. As suggested, menyVal won't change so you'll keep hitting that case as long as you loop, but minBool doesn't change in that case so you'll never stop looping. It should have taken less than a minute to see that with a breakpoint and the Autos, Locals and Watch windows. If you don't know how to use the debugger, you should stop what you're doing and learn. Clearly, it will save you much more time than it takes you.
 
Back
Top Bottom