static void Main(string[] args)
{
string name;
int age;
Console.WriteLine("How old are you?");
string input = Console.ReadLine();
if (int.TryParse(input, out age))
{
{
agedetermine();
}
}
else
{
Console.WriteLine("Give me an actual answer...");
while (!int.TryParse(Console.ReadLine(), out age))
Console.WriteLine("I don't have all day.");
while (int.TryParse(Console.ReadLine(), out age))
{
agedetermine();
}
}
}
agedetermine()仅包含 if 和 Console.WriteLine 无相关
对于第一个 input = Console.ReadLine 我故意输入非整数来触发 else ,但之后我必须为程序输入三次整数回复。有人可以告诉我为什么,也给我一个正确的编码? 我刚开始昨天,所以我什么都不知道,所以请解释你在我的代码中引入的任何新术语的功能。
答案 0 :(得分:7)
您的上一个while (int.TryParse(Console.ReadLine(), out age))
错过了!
。
现在它循环直到你输入了一些不好的东西,而不是相反。
这应该是最后一个while
(虽然没用):
while (!int.TryParse(Console.ReadLine(), out age))
防止代码重复的一个小建议:使用do...while
:
do
{
Console.WriteLine("How old are you?");
}
while (!int.TryParse(Console.ReadLine(), out age));
agedetermine();
甚至扩展了消息:
int age;
string[] messages = new string[] { "How old are you?"
, "Give me an actual answer..."
, "I don't have all day."
};
int numberOfTries = 0;
do
{
if (numberOfTries >= messages.Length)
{
Console.WriteLine(messages[messages.Length - 1]);
}
else
{
Console.WriteLine(messages[numberOfTries]);
}
numberOfTries++;
}
while (!int.TryParse(Console.ReadLine(), out age));
agedetermine();
答案 1 :(得分:1)
你的最后一句if语句缺少NOT部分
while (int.TryParse(Console.ReadLine(), out age))
应该是
while (!int.TryParse(Console.ReadLine(), out age))
答案 2 :(得分:1)
只需简化代码,根本不需要上一个while
循环。
static void Main(string[] args)
{
string name;
int age;
Console.WriteLine("How old are you?");
string input = Console.ReadLine();
{
if (int.TryParse(input, out age))
{
{
agedetermine();
}
}
else
{
Console.WriteLine("Give me an actual answer...");
while (!int.TryParse(Console.ReadLine(), out age))
Console.WriteLine("I don't have all day.");
agedetermine();
}
}
}