Невозможно выйти из цикла IF, даже если условия ложны C#C#

Место общения программистов C#
Anonymous
Невозможно выйти из цикла IF, даже если условия ложны C#

Сообщение Anonymous »

У меня есть очень простая игра с принятием решений, которую я делаю в консольном приложении C#, и я пытаюсь позволить пользователю выбрать один из 1 или 2, который дает вам определенный ответ. Я также хотел, чтобы он проверял ввод пользователя и сообщал пользователю, что он неверен, и перезагружал вопрос, если он не 1 или 2 или представляет собой просто пробелы.

Поэтому я установил цикл if, который проверяет, является ли пользовательский ввод NullorWhitespace ИЛИ НЕ равен 1 ИЛИ НЕ равен 2, затем выводит пользователю «Неправильный ввод» и перезагружает вопрос, если эти условия верны.

Чтобы перезагрузить вопрос они находятся внутри цикла while, который выполняется, если bool (runAgain) = true. Я делаю это логическое значение истинным в своем операторе if, чтобы оно запускалось снова, если оно неверно. Оператор if и перезапуск вопроса работают хорошо, проблем нет.

Что не работает, так это оператор else if (выполняется, если входное значение равно 1) и оператор else (должно выполняться, если входное значение равно 2). Они просто выполняют цикл If (неправильный ввод).

Честно говоря, я понятия не имею, почему они не работают, но это код ниже. Вероятно, это будет очень легко исправить. Я просто новичок во всех этих вещах, поэтому для меня не имеет смысла, почему это не работает, и прошу прощения, если мой вопрос неясен.
bool runAgain = true;

while(runAgain)
{
Console.WriteLine(/*My question to user*/);

Console.WriteLine(/*Ask user to pick 1 or 2*/);

string answer = Console.ReadLine();
answer = answer.Trim();

if (string.IsNullOrWhiteSpace(answer) || answer != "1" || answer != "2")
{
Console.WriteLine("Wrong Input");
runAgain = true;

}

else if (answer == "1")
{
runAgain = false;
//code to execute if 1 is inputted

}

else
{
runAgain = false;
//code to execute if 2 is inputted

}
}

Вернуться в «C#»