2015-11-04 74 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语句。