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

Jey*_*ite 1 c# tryparse while-loop

我正在做Udemy课程,并试图完成一个练习,要求用户输入数字,或者如果我写“ 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);
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 12

的每个实例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.");
    }
}
Run Code Online (Sandbox Code Playgroud)

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