需要两次尝试才能打破我的 while 循环

It takes two tries to break my while loop

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

我几乎可以正常工作了,但是我必须写 "quit" 两次 它才会中断,我不明白为什么。感谢任何帮助

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);

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

目前您的代码是这样做的:

  1. 读取行(请求用户输入)。
  2. 能解析成int吗?号
  3. 读取行(请求用户再次输入
  4. 是否等于"quit"?是的。
  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 中。然后,您可以在迭代之前对该值执行任何需要的检查。