2015-04-14 4 views
-1

Я пытаюсь создать программу, которая принимает только несколько значений. Итак, если переменная «e» не 1 или 2 или 3, говорит, что число неверно, но если значение равно этим числам, тогда выполняется другая часть.несколько условий в if-else в javascript

Все это может показаться очень простым и простым в использовании, но это так, но я запустил код и КАЖДЫЙ vaule, который я установил в «e», запускает if-часть.

Вот код:

var e; 

e=parseFloat(prompt("Input e","")); 

if(e!=1 || e!=2 || e!=3) 
    { 
    alert("put again E"); 
    } 

else 
    { 
    //whatever 
    } 
+0

Попробуйте выполнить parseInt вместо parseFloat и проверьте их равенство вместо! = –

+4

Для чего значение 'e' is' (e! = 1 || e! = 2 || e! = 3) 'false? Думаю об этом. – Biffen

+0

Так много ответов lol проверить этот код: https://jsfiddle.net/v6h7gvs3/ –

ответ

8

В английском языке вы сказали "не 1 или 2 или 3", но пишется как !(e == 1 || e == 2 || e == 3); или вы можете пойти с логически эквивалентным «не 1, а не 2, а не 3», выраженным как e != 1 && e != 2 && e != 3.

То, что вы написали, «не 1 или не 2 или не 3». Если значение равно 1, то это не 2 (а также не 3), поэтому значение «не 1 или не 2 или не 3» по-прежнему истинно. Фактически, это верно для любого значения, потому что по крайней мере два из них (если не все три) будут истинными.

+0

Спасибо, помощник! Я только начал с Javascritp (долгое время без кодирования), и это всего лишь микропроцессор из сложной программы ATM-симулятора ATM. – MasterGeekMX

1

Вы должны использовать ==, а не != как:

if(e==1 || e==2 || e==3)//then re enter value 

С вашей, если вы имеете в виду, если е не является ни 1,2,3 затем попросить пользователя повторно ввести значение.

+0

вы перевернули логику. –

2

Поскольку e не может одновременно иметь значение 1,2 и 3, ваше состояние всегда будет оцениваться как истинное. ваша версия читает

Если значение отличается от 1 или отличается от 2 или отличается от 3, сделайте это.

Так что вам нужно будет изменить его на то, что читает больше как

, если значение не 1 или 2 или 3, то

if(!(e == 1 || e == 2 || e == 3)){...} 

или вы могли бы сделать

if(e != 1 && e != 2 && e != 3){...} 

который будет читать

если значение не равно 1, а не 2, а не 3

В результате этих двух вариантов будет то же самое.

2

Это потому, что || означает или.

if(e!=1 || e!=2 || e!=3) 

Если вход е = 1 вы будете иметь

if(false OR true OR true) 

, который, конечно, оценивает к истине.

Вы хотите & &, что означает и, в результате чего:

if(e!=1 && e!=2 && e!=3) 

если вы хотите сохранить структуру кода. Или вы могли бы взять советы других и поместить свой код «else» в блок «if» и использовать ==.

1

Причина проста. Если, например, вы ввода значения 1 первая часть вашего состояния возвращает false, но остальные 2 части возврата true, то условие не может быть прочитана так:

if(false || true || true) { 
... 
} 

Поэтому независимо от того, что вход, там будет всегда be 2 true значения против значения false. Чтобы получить то, что вы хотите, используйте && вместо ||.

Смежные вопросы