尝试解析 C# 无限次让用户输入数字?

Try-parse C# infinite amount of times for user to enter a number?

我正在尝试学习如何使用 TryParse(我是编程新手,所以如果这是一个愚蠢的问题,我很抱歉!)。我想这样做,以便用户可以重试他们想要的次数,我想我可以用 while 循环和 try-catch 来做到这一点?但如果可能的话,我想学习如何使用 Try-parse 来做到这一点。我尝试使用 if else 语句尝试解析和 while 循环,但它没有用,用户必须重试,但它保存了输入的第一件事而不是第二件事。我试过四处搜索,我发现了很多关于如何使用 try-parse 的不同方法,但不是以用户可以尝试无限次的方式。现在我已经做到了,这样用户就可以尝试 3(使用下面的代码 - 告诉我是否应该在此处插入更多代码!)但是如果有人告诉我如何做到这一点,我将不胜感激用户获得无限次尝试!

提前致谢!

// Ask user to enter age, save information, clear program view
Console.WriteLine("Enter " + name + "`s age:");

int age;
string stringAge;
bool parseOkay;
stringAge = Console.ReadLine();
parseOkay = int.TryParse(stringAge, out age);

if (parseOkay == true)
{
}
else
{
    Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
    stringAge = Console.ReadLine();
    parseOkay = int.TryParse(stringAge, out age);
    if (parseOkay == true)
    {
    }
    else
    {
        Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
        stringAge = Console.ReadLine();
        parseOkay = int.TryParse(stringAge, out age);
        if (parseOkay == true)
        {
        }
        else
        {
            Console.WriteLine("Third attempt, invalid numeric input.\nPlease press enter to return to the menu and then try again.");
            Console.ReadLine();
            return;
        }
    }
}

如果我是你,我会研究一下 while loops

使用 while 循环,您不仅可以简化它,而且实际上也可以摆脱大量变量。

例如,以下代码会不断要求用户重新输入数字,直到他们提供有效数字。

int age;
while(!int.TryParse(Console.ReadLine(), out age)){
    Console.WriteLine("Please enter a valid number.");
}

Console.WriteLine("You are " + age + " years old!");

Here's a .NET Fiddle 使用此代码,您可以尝试一下。

关于您的 if 语句的附注: 如果语句正在检查条件(又名布尔值或布尔值),那么 if(x == true) 是多余的。你可以简单地做 if(x).

最重要的是,你所有的 if 语句都是空的,你的代码在 else 块中。如果需要检查条件是否为假,可以使用逻辑否定运算符(也称为逻辑非运算符),它只是条件前的感叹号。所以,做

if(!x){
   //Code here
}

和做

一样
if(x){
}
else{
    //Code here
}

由于 tryParse returns 是一个布尔值,因此您可以在 while loop 中使用该函数。 这是一个例子:

int age;

Console.WriteLine("Enter your age: ");
while (!int.TryParse(Console.ReadLine(), out age))
{
    Console.WriteLine("Invalid numeric input.\nPlease Write in only one number:");
}