而loop赢了';t出口C# while(!int.TryParse(menuChoice,out menuNumber)) { AlertMessage(“您输入的选项无效,请选择正确的选项!(1-3)”,ConsoleColor.Red); menuChoice=Console.ReadLine(); } 而(menuNumber>3 | menuNumber='1'&&choice

而loop赢了';t出口C# while(!int.TryParse(menuChoice,out menuNumber)) { AlertMessage(“您输入的选项无效,请选择正确的选项!(1-3)”,ConsoleColor.Red); menuChoice=Console.ReadLine(); } 而(menuNumber>3 | menuNumber='1'&&choice,c#,.net,C#,.net,上面的代码检查用户是否为int输入了有效值,如果输入的值是int但不在某个范围内,则另一个检查会发送错误。我遇到的错误是当某个数字高于3或低于1时,它会触发错误,并告诉您选择有效选项,以及您是否在之后输入了有效选项提示它仍然会给您相同的错误提示我建议如下: while(!int.TryParse(menuChoice, out menuNumber)) { AlertMessage("You have enetered an invalid choice

上面的代码检查用户是否为int输入了有效值,如果输入的值是int但不在某个范围内,则另一个检查会发送错误。我遇到的错误是当某个数字高于3或低于1时,它会触发错误,并告诉您选择有效选项,以及您是否在之后输入了有效选项提示它仍然会给您相同的错误提示

我建议如下:

while(!int.TryParse(menuChoice, out menuNumber))
{                
     AlertMessage("You have enetered an invalid choice, please select a correct option! (1-3)", ConsoleColor.Red);
     menuChoice = Console.ReadLine();     
}
while (menuNumber > 3 | menuNumber < 1)
{
     AlertMessage("You have enetered an invalid Number, please select a correct option! (1-3)", ConsoleColor.Red);
     menuChoice = Console.ReadLine();               
}

对于您眼前的问题,我建议进行一些重构。使用带有布尔值的1循环作为退出条件。在内部测试repsonse并将布尔值设置为true或打印错误消息:

int menuChoice = GetChoice(1,3);
bool correct=false;
而(!正确)
{
if(int.TryParse(menuChoice,out menuNumber)和&(menuNumber=1))
{
正确=正确;
}
其他的
{
AlertMessage(“您输入的选项无效,请选择正确的选项!(1-3)”,ConsoleColor.Red);
menuChoice=Console.ReadLine();
}
}
您可以更进一步,摆脱解析。只需检查输入的第一个字符是否在正确的范围内:

bool correct = false;
while (!correct)
{
    if (int.TryParse(menuChoice, out menuNumber) && (menuNumber <= 3 && menuNumber >= 1))
    {
        correct = true;
    }
    else
    {
        AlertMessage("You have enetered an invalid choice, please select a correct option! (1-3)", ConsoleColor.Red);
        menuChoice = Console.ReadLine();
    }

}
bool correct=false;
字符串menuChoice=“”;
字符选择='\0';
而(!正确)
{
menuChoice=Console.ReadLine();
choice=menuChoice[0];
如果(选项>='1'&&choice
在这个循环中,它不会停止,直到您输入字符串或任何非整数的数据类型,所以您需要为第二个循环设置条件

while(!int.TryParse(menuChoice, out menuNumber))
        {                
         AlertMessage("You have enetered an invalid Number, please select a correct option! (1-3)", ConsoleColor.Red);           
            menuChoice = Console.ReadLine();     
    }
while(!int.TryParse(menuChoice,out menuNumber)| |(menuNumber>3 | | menuNumber<1))
{                
AlertMessage(“您输入的号码无效,请选择正确的选项!(1-3)”,ConsoleColor.Red);
menuChoice=Console.ReadLine();
}
因此,当您输入正确的数字(1-3)时,它将停止
因为如果您输入字符串,条件将为真,如果您输入不在(1-3)内的数字,条件将为真

您需要重新分配
menuNumber
Daniel是正确的。您的while循环正在检查menuNumber的更改,但只有menuChoice会更改(在第二个while循环中)…在调试器中逐行遍历代码。您应该会看到一些有趣的事情发生。
bool correct = false;
string menuChoice = "";
char choice = '\0';
while (!correct)
{
    menuChoice = Console.ReadLine();
    choice = menuChoice[0];
    if (choice >= '1' && choice <= '3')
    {
        correct = true;
    }
    else
    {
        AlertMessage("You have enetered an invalid choice, please select a correct option! (1-3)", ConsoleColor.Red);
    }

}
while(!int.TryParse(menuChoice, out menuNumber))
        {                
         AlertMessage("You have enetered an invalid Number, please select a correct option! (1-3)", ConsoleColor.Red);           
            menuChoice = Console.ReadLine();     
    }
   while(!int.TryParse(menuChoice, out menuNumber) ||( menuNumber > 3 || menuNumber < 1))
     {                
         AlertMessage("You have enetered an invalid Number, please select a correct option! (1-3)", ConsoleColor.Red);
            menuChoice = Console.ReadLine();     
    }