int userSelection;
string userInput;
Console.WriteLine("Welcome! Please make a selection by Entering 1, 2, 2 or 4");
DisplayMenuOptions();
userSelection = int.Parse(Console.ReadLine());
while (userSelection >= 1 && userSelection <= 4)
{
if (userSelection == 1)
{
// CODES FOR FULL FILE LISTING"
}
else if (userSelection == 2)
{
// CODES FOR FILTERED FILE LISTING"
}
else if (userSelection == 3)
{
// CODES FOR DISPLAY FOLDER STATISTICS"
}
else if (userSelection == 4) //code that will be executed every time user select 4
{
// CODES TO QUIT"
}
else
{
Console.WriteLine("ERROR MESSAGE HERE");
}
Console.WriteLine("Press Enter to Continue"); //waits for user to press enter
Console.ReadKey(); //reads user keystroke
Console.Clear(); //clears display information
DisplayMenuOptions();
userSelection = int.Parse(Console.ReadLine()); //reads and converts user selection
}
但它退出应用程序而不是等待用户再次输入。
我是编程的初学者,这是我在任何Console C#应用程序中的第一次尝试。这是我任务的一部分。因此,如果我在这里做错了什么,请指导我。
当我将它放在while循环之外时,它只在用户输入无效输入时执行一次,但在第二次用户输入无效输出时退出。
谢谢
答案 0 :(得分:6)
因为这就是你的while循环所说的:“输入在1到4之间循环”,当用户输入无效输入时会变为false。
鉴于你只想在输入等于4时退出,没有别的:
while (userSelection != 4)
然后你也可以恢复} else {
,因为它确实按预期工作。
答案 1 :(得分:0)
问题是您的while
条件会阻止在选择无效时输入循环。
如果要在循环内检测无效值,则需要删除此行为。
while (true)
{
if (userSelection == 1)
{
// CODES FOR FULL FILE LISTING"
}
else if (userSelection == 2)
{
// CODES FOR FILTERED FILE LISTING"
}
else if (userSelection == 3)
{
// CODES FOR DISPLAY FOLDER STATISTICS"
}
else if (userSelection == 4) //code that will be executed every time user select 4
{
// CODES TO QUIT"
}
else
{
Console.WriteLine("ERROR MESSAGE HERE");
break;
}
Console.WriteLine("Press Enter to Continue"); //waits for user to press enter
Console.ReadKey(); //reads user keystroke
Console.Clear(); //clears display information
DisplayMenuOptions();
userSelection = int.Parse(Console.ReadLine()); //reads and converts user selection
}