【问题标题】:It takes two tries to break my while loop需要两次尝试才能打破我的 while 循环
【发布时间】:2019-10-08 01:56:14
【问题描述】:

我正在上 Udemy 课程并尝试完成一个练习,我要求用户输入一个数字,或者如果我写“退出”则打破循环。循环后,我必须对所有数字求和。

我几乎让它工作了,但我必须写“退出”两次才能让它崩溃,我不明白为什么。感谢任何帮助

int[] total = new int[10];
int number;
int counter = 0;
Console.WriteLine("Write up to 10 number or 'quit' to exit early");
while (counter < 10)
{
    bool success = int.TryParse(Console.ReadLine(), out number);
    if (success == true)
    {
        total[counter] = number;
        counter++;
    } else if (Console.ReadLine() == "quit")
    {
        break;
    } else
    {
        Console.WriteLine("Wrong input.");
    }
}
int sum = total.Sum();
Console.WriteLine("The sum is {0}", sum);

【问题讨论】:

    标签: c# while-loop tryparse


    【解决方案1】:

    Console.ReadLine() 的每个实例将读取不同的行。您应该在循环顶部读取一次该值。

    目前您的代码执行此操作:

    1. 读取行(请求用户输入)。
    2. 可以解析成int吗?没有。
    3. 读取行(请求用户输入再次
    4. 是否等于“退出”?是的。
    5. 休息

    您应该在循环的每次迭代中读取该行一次:

    while (counter < 10)
    {
        string line = Console.ReadLine();
        bool success = int.TryParse(line, out number);
        if (success == true)
        {
            total[counter] = number;
            counter++;
        }
        else if (line == "quit")
        {
            break;
        }
        else
        {
            Console.WriteLine("Wrong input.");
        }
    }
    

    这将请求用户输入一次并将结果存储在line。然后,您可以在迭代之前对该值执行所需的任何检查。

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 2021-12-31
      • 2021-06-18
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多