Не могу получить цикл while, чтобы проверить, равен ли мой пользовательский ввод некоторым числам - PullRequest
0 голосов
/ 29 сентября 2018

Это кусок кода, о котором я говорю.Поэтому я хочу, чтобы пользователь мог писать только 1 или 2, иначе цикл while никогда не прервется.Проблема в том, что по какой-то причине цикл просто никогда не прерывается, даже если я пишу 1 или 2.

while (caseSwitch != 1 || caseSwitch != 2)
{
    Console.Write("Please write a number: ");
    Int32.TryParse(userInput = Console.ReadLine(), out caseSwitch);
}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Примечание: есть другое решение этой проблемы с использованием закона де Моргана .

while (!(caseSwitch == 1 || caseSwitch == 2))
{
     Console.Write("Please write a number: ");
     Int32.TryParse(userInput = Console.ReadLine(), out caseSwitch);
}
0 голосов
/ 29 сентября 2018

caseSwitch имеет в любое время только одно значение, поэтому оно всегда будет либо не 1, либо не 2. Замените || на &&.Это означает, что вы зацикливаетесь, если caseSwitch не равно 1 и не равно 2. В тот момент, когда оно является одним из них, оно останавливается.

while (caseSwitch != 1 && caseSwitch != 2)
{
    Console.Write("Please write a number: ");
    Int32.TryParse(userInput = Console.ReadLine(), out caseSwitch);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...