2014-10-31 71 views
0

我得到了一個賦值,我必須連續運行一個程序,除非在程序關閉的情況下按下3。如果按下1或2鍵,它需要顯示「菜單1」或「菜單2」,其他任何鍵都會給出錯誤消息,告訴用戶按1,2或3(退出程序)。使用switch語句創建一個連續運行的應用程序

我設法讓我的開關工作,但我有問題,保持程序的運行,這樣一個人可以進入1其後是該做的結果是兩個:

菜單1個 菜單2

我試圖把程序放在一個循環,但它沒有工作得非常好,這裏是我的代碼:

Console.WriteLine("*** MENU ***\n\n1. Display Menu 1\n2. Display Menu 2\n3. Exit"); 
     ConsoleKeyInfo uservalue = Console.ReadKey(); 
     string foo = uservalue.KeyChar.ToString(); 
     while (foo != "3") 
     { 
      switch (foo) 
      { 
       case "1": 
        Console.WriteLine("Menu 1"); 
        Console.ReadLine(); 
        break; 
       case "2": 
        Console.WriteLine("Menu 2"); 
        Console.ReadLine(); 
        break; 
       default: 
        Console.WriteLine("Invalid Selection. Please enter 1, 2 or 3"); 
        Console.ReadLine(); 
        break; 
      } 

     } 
+1

只是移動前三行內環路和刪除'ReadLine'在所有'case'語句。 – 2014-10-31 09:02:25

+0

另外,我想知道你爲什麼要做'KeyChar.ToString()'。你可以使用switch(KeyChar){case'1':...}'就好了。或者甚至更好,直接使用'Key'。 – Luaan 2014-10-31 09:08:46

+0

@Konrad Kokosa如果我這樣做了,while(foo!=「3」)將不再起作用,因爲輸入3的部分本身就在循環中。同時刪除ReadLine語句導致控制檯連續寫入文本。 – bucket 2014-10-31 09:31:23

回答

0

幾乎沒有......你要做的就是等待用戶輸入和唯一的出口在3被按下。

string command; 
do 
{ 
    command = Console.ReadLine(); 
} 
while(!"3".Equals(command, StringComparison.InvariantCultureIgnoreCase))