2015-11-04 75 views
-1

我對C#很新穎(好吧,一般編程) 我正在嘗試爲c#控制檯應用程序創建菜單。從菜單中選擇後,菜單不斷重新出現...我已經研究並嘗試了許多不同的選項,但似乎沒有任何工作適合我......我知道這是我做錯了一些愚蠢的事情。 任何意見或指導將非常感激。先謝謝了。控制檯應用程序c#中的菜單問題

static void Main() //Start of program 
{ 
    //Menu and other UI stuff 

    int userSelection = 0; 

    do 
    { 
     Console.WriteLine("[1] Encryption"); 
     Console.WriteLine("[2] Decryption"); 
     Console.WriteLine("[3] Exit"); 

     Console.Write ("Please choose an option 1-3: "); 
     userSelection = Int32.Parse(Console.ReadLine()); 

     switch(userSelection) 
     { 
      case 1: 
       readFile(); 
       break; 

      case 2: 
       decryption(); 
       break; 

      case 3: 
       Environment.Exit(0); 
       break; 
      default: 
       Console.WriteLine("Your selection is invalid. Please  try again."); 
       break; 
     } 
    } 
    while (userSelection != 4); 
} 
+0

那麼,depsite事實上,你用'3'退出,因此循環的實際情況變得無用,程序看起來很好,編譯和工作 - 至少對我而言。 – HimBromBeere

+0

您編寫它使其重新出現(do循環)。根據你的功能做什麼,它會再次循環並打印菜單,直到你退出。 –

+0

你應該使用'TryParse();'來避免異常。 – AntiHeadshot

回答

0

你的do/while只會在你的userSelection的值爲4時停止,在這個例子中,它永遠不會發生。

更改,而條件

while(userSelection <= 0 || userSelection > 3) 

應該解決...

也許你想使用類似:

int userSelection = 0; 
bool validAnswer = false; 
do 
{ 
    Console.WriteLine("[1] Encryption"); 
    Console.WriteLine("[2] Decryption"); 
    Console.WriteLine("[3] Exit"); 

    Console.Write ("Please choose an option 1-3: "); 
    userSelection = Int32.Parse(Console.ReadLine()); 

    switch(userSelection) 
    { 
     case 1: 
      readFile(); 
      validAnswer = true; 
      break; 

     case 2: 
      decryption(); 
      validAnswer = true; 
      break; 

     case 3: 
      validAnswer = true; 
      Environment.Exit(0); 
      break; 
     default: 
      Console.Clear(); 
      Console.WriteLine("Your selection is invalid. Please  try again."); 
      break; 
    } 

}while (!validAnswer); 
+0

它在技術上也會停止,當他們選擇3時,只是不在'while'部分。 –

+0

完美,非常感謝你....我以爲它會是這樣的....再次感謝。 –

0

它反覆出現,因爲你放置你的代碼在do while循環中。如果您只想運行此代碼,請不要使用循環結構,只需將其直接放入Main即可。

如果你使用類似

do 
{ 
    // ... 
} 
while (userSelection != 4); 

循環內的代碼將被重複,直到用戶輸入4

從MSDN文章在do while

的做,直到指定的表達式的值爲false語句執行一條或多條語句 反覆塊。

另一種選擇是在switch塊之後使用break語句。