我对C#很新(嗯,一般编程) 我正在尝试为c#控制台应用程序创建一个菜单。从菜单中选择菜单后,菜单会再次出现......我已经研究并尝试了许多不同的选项,但似乎没有什么对我有用....我知道这对我来说是愚蠢的#39;做错了。 任何建议或指导将非常感谢。谢谢你提前。
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 :(得分:0)
当你的userSelection的值为4时,你的do / while只会停止,在这个例子中,它永远不会发生。
将您的时间条件更改为
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);
答案 1 :(得分:0)
由于您将代码放在do while
循环中,它会不断出现。如果您只想在不使用循环结构的情况下运行此代码,只需将其直接放在Main
中。
如果您使用类似
的内容do
{
// ...
}
while (userSelection != 4);
循环内的代码将重复进行,直到用户输入4
。
来自do while的msdn文章:
do语句执行语句或语句块 反复进行,直到指定的表达式求值为false。
另一种选择是在break
阻止后使用switch
语句。
答案 2 :(得分:-1)
class Program
{
static void Main() //Start of program
{
//Menu and other UI stuff
string userSelection;
do
{
Console.Clear();
Console.WriteLine("[1] Encryption");
Console.WriteLine("[2] Decryption");
Console.WriteLine("[3] Exit");
Console.Write("Please choose an option 1-3: ");
userSelection = Console.ReadLine();
switch (userSelection)
{
case "1":
Console.WriteLine("mission 1");
break;
case "2":
Console.WriteLine("mission 2");
break;
case "3":
Environment.Exit(0);
break;
default:
Console.WriteLine("Your selection is invalid. Please try again.");
break;
}
Console.ReadLine();
}
while (true);
}
}