почему он не выходит из цикла независимо от того, что вход - PullRequest
0 голосов
/ 22 сентября 2019

независимо от того, что ввод, он никогда не прерывает цикл, который я пробовал.

Я пытался с коммутатором тот же результат;я попытался только с одним условием (! answer.equalsIgnoreCase ("y")) без ИЛИ, и это сработало, но не с двумя условиями.введите 'y' или 'n', но он запрашивает у меня ввод снова и снова.

Ответы [ 2 ]

3 голосов
/ 22 сентября 2019

Хотя ответ «нет» или «нет»?

Если да, то нет.Если это нет, то это не да.Таким образом, условие всегда выполняется и оно зацикливается.

Возможно, вы захотите использовать операторы !.

0 голосов
/ 22 сентября 2019
while( !answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n"));

Проблема возникает из-за того, что цикл do-while проверяет оба условия с помощью оператора OR.

Подумайте об этом так, если «Ответ» равен «Y», что условие нарушено, но условие ИЛИ «N» все еще активно, поэтому цикл будет продолжен.

Функция do while проверяет только одно из вышеприведенных условий на ложность перед продолжением цикла.

Чтобы исправить это, замените || на &&, и цикл прервется, есливводится либо Y, либо N, поскольку цикл будет продолжаться, только если оба условия ложны.

...