2018-01-30, 12:48
  #1
Medlem
Hej
Har en uppgift som jag har fastnat lite på. Det är nämligen så att While - loopen inte fungerar som den ska och har försökt att leka med den men antingen så stängs programmet av efter case 1 eller så körs det resten av case om och om igen. Är det något jag gör fel eller saknar jag något?

Kod:
namespace Menu
{
    class Program
    {
        static void Main()
        {
            string[] test = new string[5];
            MainMenu();
            int menuoption;
            Int32.TryParse(Console.ReadLine(), out menuoption);
            string userInput;

            while (menuoption <= 5)
            switch (menuoption)
            {
                case 1:
                    for (int i = 0; i < 5; i++)
                    {
                        Console.Write("Write the word you want add: ");
                        test[i] = Console.ReadLine();
                            menuoption++;
                    }
                   
                    break;
                case 2:
                    {
                 Console.WriteLine("Following words exists : \n\n{0} \n{1} \n{2} \n{3} \n{4} ", test[0], test[1], test[2], test[3], test[4]);
                    }
                    break;
                case 3:
                    {
                        Console.WriteLine("Write one word to add: ");
                        userInput = Console.ReadLine();
                        Console.WriteLine("Following word: " + userInput + " has been added");
                           
                    }
                    break;
                case 4:
                    Console.Write("Write the word you are searching for: ");

                    string sök = Console.ReadLine();
                    bool flag = false;
                    for (int i = 0; i < 5; i++)
                    {
                        if (test[i] == sök)
                        {
                            flag = true;
                        }
                    }
                    if (flag)
                    {
                        Console.WriteLine("Following word has been found:" + sök);
                    }
                    break;
                case 5:
                    Console.WriteLine("Press 'Enter' to exit' ");
                    Console.ReadLine();
                    Environment.Exit(0);
                  
                    break;

                default: // 
                    Console.Write("\nWrong input, please try again");
                    break;
            }
            MainMenu();
        }

        private static bool MainMenu()
        {
            Console.WriteLine("\n\n[1]Add five words to the list");
            Console.WriteLine("[2] View all words");
            Console.WriteLine("[3] Add one word ");
            Console.WriteLine("[4] Search ");
            Console.WriteLine("[5] Quit");
            Console.Write("\nChoose:");
           return true;
        }

    }
}
__________________
Senast redigerad av Aghani 2018-01-30 kl. 13:35.
Citera
2018-01-30, 13:25
  #2
Medlem
kodsnickrarns avatar
Nu verkar det saknas lite kod i ditt exempel, kanske blev fel vid klipp&klistringen där.
While-raden ser konstig ut och kompilerar inte som den ser ut:

Kod:
while (menuoption <= 
switch (menuoption)

Nu antar jag att det skulle se ut såhär nånting:

Kod:
while (menuoption <= 4) 
{
  switch() 
  {
    ...
  }
  ...
  MainMenu();
}

Men, felet är att du aldrig läser in något nytt menyalternativ _inne_ i whileloopen med följd att
den kommer snurra runt om och om igen i all evighet..

/K
Citera
2018-01-30, 13:39
  #3
Medlem
Citat:
Ursprungligen postat av kodsnickrarn
Nu verkar det saknas lite kod i ditt exempel, kanske blev fel vid klipp&klistringen där.
While-raden ser konstig ut och kompilerar inte som den ser ut:

Kod:
while (menuoption <= 
switch (menuoption)

Nu antar jag att det skulle se ut såhär nånting:

Kod:
while (menuoption <= 4) 
{
  switch() 
  {
    ...
  }
  ...
  MainMenu();
}

Men, felet är att du aldrig läser in något nytt menyalternativ _inne_ i whileloopen med följd att
den kommer snurra runt om och om igen i all evighet..

/K

Ja, precis , det ska stå while(menuoption <= 5 ),

Så om jag har förstått det rätt så ska switch-satsen ligga inuti while- loop? Då jag ska väl lägga till curly braces mellan dem eller?
Citera
2018-01-30, 13:57
  #4
Medlem
kodsnickrarns avatar
Citat:
Ursprungligen postat av Aghani
Ja, precis , det ska stå while(menuoption <= 5 ),

Så om jag har förstått det rätt så ska switch-satsen ligga inuti while- loop? Då jag ska väl lägga till curly braces mellan dem eller?

Ja det är klart lämpligt :-)

Du ska också lägga in inläsningen av "menuoption" inne i while-loopen, annars kommer du bara läsa in t.ex. "2" en gång (före while-loopen) och sedan loopa runt, runt, runt med samma menuoption tills du avbryter programmet med Ctrl-C.

Ett tips är att börja använda debuggern i VisualStudio, den är fantastisk, och stega dig igenom ditt program rad för rad så blir det alldeles uppenbart vad det är som händer.

Nästa steg kanske vore att flytta ner inläsningen av menyvalet till sist i funktionen MainMenu och sedan låta den returner värdet...

/K
Citera
2018-01-30, 14:04
  #5
Medlem
Citat:
Ursprungligen postat av kodsnickrarn
Ja det är klart lämpligt :-)

Du ska också lägga in inläsningen av "menuoption" inne i while-loopen, annars kommer du bara läsa in t.ex. "2" en gång (före while-loopen) och sedan loopa runt, runt, runt med samma menuoption tills du avbryter programmet med Ctrl-C.

Ett tips är att börja använda debuggern i VisualStudio, den är fantastisk, och stega dig igenom ditt program rad för rad så blir det alldeles uppenbart vad det är som händer.

Nästa steg kanske vore att flytta ner inläsningen av menyvalet till sist i funktionen MainMenu och sedan låta den returner värdet...

/K


Tack för hjälpen, att det kunde vara en så liten sak som störde mig väldigt mycket. Programmet kan nu köras i while loop och finns inget som loopar flera gånger efter varandra.
Återigen vill jag tack dig för hjälpen.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in