C#:WHILE循环继续,似乎忽略了条件

C#: WHILE loop continues, seemingly ignoring the condition

我正在编写一个基本的问答程序来帮助自己熟悉 C#。我正处于开发的早期阶段,运行 遇到了一个我很难理解的问题。这是代码,后面是我迄今为止尝试过的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TriviaProject
{
    internal class Program
    {
        static void Main(string[] args)
        {

        var q1 = "x";
        int totalCorrect = 0;
        int totalIncorrect = 0;

        Console.WriteLine("Question 1: What is the answer?");
        Console.WriteLine("A. Correct Answer");
        Console.WriteLine("B. Incorrect Answer");
        Console.WriteLine("C. Incorrect Answer");

            while (q1 != "A" || q1 != "B" || q1 != "C")
            {
                q1 = Console.ReadLine();

                switch (q1)
                {
                    case "A":
                        Console.WriteLine("{0} is the correct Answer!", q1);
                        ++totalCorrect;
                        break;

                    case "B":
                        Console.WriteLine("{0} is not correct.", q1);
                        ++totalIncorrect;
                        break;

                    case "C":
                        Console.WriteLine("{0} is not correct.", q1);
                        ++totalIncorrect;
                        break;

                    default:
                        Console.WriteLine("{0} is not a valid entry. A, B or C.", q1);
                        break;
                }
            }
        Console.WriteLine("You got {0} correct and {1} incorrect. Your total score is: ", totalCorrect, totalIncorrect);
        }
    }
}

期望的行为 如果答案是 A,则应增加并显示 totalCorrect 计数。如果答案是 B 或 C,则应增加并显示 totalIncorrect 计数。

到目前为止已尝试

我也尝试过使用 CONTINUE 而不是 BREAK 的不同组合。

如果有人能解释这种行为,我们将不胜感激。

从逻辑上讲,您的 while 循环是 while (true)

q1 != "A"

如果q1是A则为假,否则为真

q1 != "B"

如果q1是B则为假,否则为真

因为 A 不是 B,所以这两个陈述不可能同时为假,所以你有

  • A) 错误 ||真
  • B) 正确 ||假
  • 其他)正确||真

因为 true-or-anything 为 true,你的条件就是 true