我对循环很熟悉,但循环一个过程让我感到困惑:
如果用户输入一个非整数,我希望再次提示“你的年龄”这个问题,直到用户输入一个整数。
Console.WriteLine("Your age:");
string line = Console.ReadLine();
if (!int.TryParse(line, out age))
{
Console.WriteLine("{0} is not an integer", line);
}
尝试
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();
}
我不确定循环进程是什么意思。您正在循环获取用户输入并尝试解析该输入。
您主要可以使用while、do、for或 (gulp!don't do it!) goto来完成此操作。
试试这个,它会让“你的年龄:”重复,直到你有正确的输入:
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;
}
我已经使用了这种方法。我不知道这是否会降低性能,但我发现使用正则表达式很酷。让我知道这是否适合你
将此添加到顶部
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();
}
}
输出!
希望这可以帮助。
如果我理解你的问题,你为什么不做
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();
}
我只知道递归函数来实现这一点,但不建议这样做,因为它容易出错并且使程序过于复杂。
在班上
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;
}
}