2016-06-01 3 views
1

У меня есть базовый цикл while, где я выполняю входное значение приглашения, а затем запускаю его через условие. По какой-то странной причине, когда я использую! == вместе с || в том же состоянии он не работает. Я знаю, что могу добавить дополнительные параметры для сравнения с использованием isNaN и других логических операторов, но не имеет смысла, почему это не работает, и я хотел бы, чтобы этот маршрут работал.! = Оператор не работает во время цикла при сочетании с || OR

var number; 
do { 
    number = parseInt(prompt('Enter 1 or 2')); 
} 
while ((number !== 1) || (number !== 2)); 

Если бы я выполнить следующий код с помощью одного выражения для сравнения, он не работает без проблем, но в предыдущем заявлении он не хотел иметь несколько условий для сравнения.

var number; 
do { 
    number = parseInt(prompt('Enter 1 or 2')); 
} 
while (number !== 1); 

Спасибо!

+0

Что именно вы проверяете? Убедившись, что они вошли либо в 1, либо в 2, но ничего больше? (Предположите, что вам нужно && not ||.) – nurdyguy

+0

Число всегда будет не равным 1 или не будет 2. Вы хотите сказать, что 'number' не 1 AND не 2. –

+0

'! (Number === 1 | | number === 2) ', или' (number! == 1 && number! == 2) ' – nnnnnn

ответ

4

Если число равно 1, то LHS является ложным, но это не 2, поэтому RHS является истинным, а общий тест является истинным.

Если число не равно 1, то LHS является истинным, а общий тест является истинным.

Вам необходимо &&, так что вы говорите Если номер не 1, а также не 2.

0

начиная с гарантировано как минимум 1 расчет. в вашем случае с 2 или сравнением, это должен быть оператор & &.

гарантировано 1 расчет перед тестированием для выхода

var number; 
do { 
    number = parseInt(prompt('Enter 1 or 2')); 
} 
while ((number !== 1) && (number !== 2)); 

не гарантируется

var number; 
    while ((number !== 1) && (number !== 2)); 
    { 
     number = parseInt(prompt('Enter 1 or 2')); 
    } 
+0

Спасибо за быстрый ввод! –

0

Это логическая задача, и она обязана дать верно в любом случае, как это.

var number; 
do { 
    number = parseInt(prompt('Enter 1 or 2')); 
} 
while ((number !== 1) || (number !== 2)); 

number = undefined;// or any other value !==1 AND !==2, then true 
number = 1;// !==2 BUT ==1, then true 
number = 2;// !==1 BUT ==2, then true 

Вы должны проверить, если оба утверждения true сразу, а не один или другой.

var number; 
do { 
    number = parseInt(prompt('Enter 1 or 2')); 
} 
while ((number !== 1) && (number !== 2)); 

number = undefined;// or any other value !== 1 AND !== 2, then true 
number = 1;// !== 2 BUT == 1, then false 
number = 2;// !== 1 BUT == 2, then false 
Смежные вопросы