2015-04-14 64 views
-1

我試圖製作一個只接受幾個值的程序。因此,如果「e」變量不是1或2或3,表示該數字不正確,但如果該值等於那些數字,則運行else部分。多個條件中的一個if - else在javascript中

所有這些可能聽起來非常begginer級別和易於實現,它是,但我運行的代碼和每個我設置爲「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(e!= 1 || e!= 2 || e!= 3)?想想看。 – Biffen

+0

所以很多答案大聲笑檢查此代碼: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機模擬器複雜程序的微粒。 – MasterGeekMX

1

你應該使用==,而不是像!=

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

有了您,如果,你的意思是如果E既不是1,2,3然後要求用戶重新輸入值。

+0

你翻轉了邏輯。 –

2

由於e不能同時具有1,2和3的值,因此您的條件總是要評估爲true。您的版本爲

如果值不同於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) 

如果輸入E = 1,你將有

if(false OR true OR true) 

這當然,計算結果爲true。

你想& &,這意味着和,導致:

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

,如果你想保持你的代碼結構。或者你可以接受其他人的建議,並將你的「其他」代碼放入「if」塊並使用==。

1

原因很簡單。例如,如果你輸入的值1你的病情的第一部分返回false,但另外2份返回true,則條件可以這樣寫:

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

所以不管輸入什麼,總會有根據false值得出2 true值。爲了得到你想要的,使用&&而不是||