Это распространенное заблуждение при изучении программирования.
Вы, как человек, можете легко прочитать инструкцию, которая читается следующим образом: «в то время как а не 1 или 2», но компьютер должен следовать определенным правилам, и одно из правил заключается в том, что «или» принимает старшинство.
Что это означает, что он первым испытующий, чтобы выяснить, что «1 или 2» означает, что, так как в основном, ваше утверждение аналогично этому:
while (a != SOMETHING);
||
на языке Java является «логическим или» , который преобразуется в это: Возьмите два значения (называемые операндами) с каждой стороны ||
(называемые оператором) и объедините их в соответствии с правилами «логический» или «.
«логический» или «использует» два логических значения, которые могут быть только True или False, и поскольку вы попросили его использовать оператор с числами, вот почему вы получаете это конкретное сообщение об ошибке.
Если вы попытались использовать единственный канал, |
, компилятор мог бы перестать жаловаться, но он все равно не сделает то, что вы хотите.
1 or 2
при работе с числами, используя оператор |
, который является «побитовым» или «оператором», вы получите два числа, объединенные в цифру 3. Вы можете больше узнать о «побитовых операторах», если хотите знаю, почему.
Одним словом, вы не можете писать свои модели.
В языках программирования сравнения выполняются по два значения за раз, т.е. один против другого, поэтому ваш единственный выбор состоит в том, чтобы развернуть выражение для сравнения дважды.
Вот некоторые эквивалентные выражения, которые дадут вам то, что вы хотите:
while (a != 1 && a != 2);
или это:
while (!(a == 1 || a == 2));
Чтобы быть оттачивает, мне нравится первый лучше.
Спасибо! Вы решили мою проблему, и я тоже кое-что узнал. – formn