我熟悉循环,但循环过程让我感到困惑:
如果用户输入非整数,我希望再次提示“您的年龄”这个问题,直到用户输入整数。
Console.WriteLine("Your age:");
string line = Console.ReadLine();
if (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
}
答案 0 :(得分:7)
尝试
int age;
Console.WriteLine("Your age:");
string line = Console.ReadLine();
while (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
Console.WriteLine("Your age:");
line = Console.ReadLine();
}
我不确定循环进程的含义。您正在循环获取用户输入并尝试解析该输入。
你可以在,做, 或
答案 1 :(得分:6)
试试这个,它会使“你的年龄:”重复,直到输入正确为止:
int age;
while(true)
{
Console.WriteLine("Your age:");
string line = Console.ReadLine();
if (!int.TryParse(line, out age))
Console.WriteLine("{0} is not an integer", line);
else break;
}
答案 2 :(得分:2)
我使用过这种方法。我不知道这是否会降低性能,但我发现使用正则表达式很酷。如果这适用于你,请告诉我
将其添加到TOP
using System.Text.RegularExpressions;
然后使用以下内容:
bool bEnteredNumberNotValid = true;
while (bEnteredNumberNotValid)
{
Console.WriteLine("Your age:");
string sAge = Console.ReadLine();
string regString = "(^[0-9]+$)"; //REGEX FOR ONLY NUMBERS
Regex regVal = new Regex(regString, RegexOptions.IgnoreCase | RegexOptions.Singleline); //REGEX ENGINE
Match matVal = regVal.Match(sAge); //REGEX MATCH WITH THE INPUT
if (!matVal.Success) // IF THERE IS NO MATCH, SHOW THE BELOW
{
Console.WriteLine("{0} is not an integer", sAge);
}
else // ELSE SET bEnteredNumberNotValid FALSE AND GET OUT.
{
bEnteredNumberNotValid = false;
Console.WriteLine("Press any key to continue...");
Console.ReadLine();
}
}
OUTPUT!
Click here to see the output of above program
希望这有帮助。
答案 3 :(得分:1)
如果我理解你的问题,你为什么不这样做呢?
Console.WriteLine("Your age:");
string line = Console.ReadLine();
while (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
Console.WriteLine("Your age:");
line = Console.ReadLine();
}
答案 4 :(得分:0)
我只知道Recursive Function来实现这一点,但不推荐使用它,因为它容易出错并且使程序过于复杂。
课堂
string line;
int age = 0;
在主要
Console.WriteLine("Your age:");
line = Console.ReadLine();
checkFunction();
声明方法
public int checkFunction()
{
if (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
line = Console.ReadLine();
return checkFunction();
}
else
{
return age;
}
}