请求输入三次,我的代码出了什么问题

本文关键字:代码 我的 问题 什么 三次 输入 请求 | 更新日期: 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();
        }
    }
}