Estoy escribiendo un programa básico de trivia para ayudarme a familiarizarme con C#. Estoy en las primeras etapas de desarrollo y me encontré con un problema que me cuesta entender. Aquí está el código, seguido de lo que he intentado hasta ahora.
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); } } }Comportamiento deseado Si la respuesta es A, entonces la cuenta totalCorrect debería aumentar y mostrarse. Si la respuesta es B o C, entonces la cuenta total incorrecta debería aumentar y mostrarse.
Intenté hasta ahora
También probé diferentes combinaciones de usar CONTINUE en lugar de BREAK.
Si alguien pudiera explicar este comportamiento, sería muy apreciado.
Su bucle while es, lógicamente, while (true) .
q1 != "A"Eso es falso si q1 es A, de lo contrario es verdadero
q1 != "B"Eso es falso si q1 es B, de lo contrario es verdadero
Dado que A no es B, no hay forma de que ambas declaraciones puedan ser falsas al mismo tiempo, por lo que tiene
Dado que verdadero o cualquier cosa es verdadero, su condición es simplemente true .