请求输入三次,我的代码出了什么问题
本文关键字:代码 我的 问题 什么 三次 输入 请求 | 更新日期: 2023-09-27 17:59:12
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和控制台。WriteLine不包含任何相关
对于第一个输入=Console.ReadLine,我故意输入非整数来触发其他程序,但在那之后,我必须输入三次整数,程序才能响应。有人能告诉我为什么,并给我一个合适的编码吗?我昨天刚开始,所以我什么都不知道,所以请解释一下你在我的代码中引入的任何新术语的功能。
您的最后一个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();
您的最后一个if语句缺少NOT部分
while (int.TryParse(Console.ReadLine(), out age))
应该是
while (!int.TryParse(Console.ReadLine(), out age))
只要简化代码,就根本不需要最后一个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();
}
}
}