在条件错误之后循环回来

时间:2014-12-29 17:34:17

标签: c#

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循环之外时,它只在用户输入无效输入时执行一次,但在第二次用户输入无效输出时退出。

谢谢

2 个答案:

答案 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
}