尝试解析 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:");
}
我正在尝试学习如何使用 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:");
}