2013-04-17 47 views
-1

對不起,再次打擾你,但我似乎有我的代碼的另一個問題。它爲某些輸入輸出相同的結果,我花了大約15分鐘時間試圖找出問題所在。我會問我的老師,但我現在不在大學。If Else輸出相同的結果

再次,代碼在下面,並感謝您花時間忍受我。

//declare vars and/or constants 
var endString = "Total cost per night is $"; 

//input vars 
pplCount = prompt("How many people will be staying?"); 
discYes = prompt("Do you have an AAA discount?"); 
viewYes = prompt("Do you want a room with a view?"); 

//if variables 
//double yes 

if(pplCount == "1" || pplCount == "2" && discYes == "Yes" && viewYes == "Yes") { 
    discount = 50*0.15; 
    roomCost = 50; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost - discount + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "3" || pplCount === "4" && discYes == "Yes" && viewYes == "Yes") { 
    discount = 60*0.10; 
    roomCost = 60; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost - discount + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "5" || pplCount === "6" && discYes === "Yes" && viewYes === "Yes") { 
    discount = 70*0.05; 
    roomCost = 70; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost - discount + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "1" || pplCount === "2" && discYes === "No" && viewYes === "Yes") { 
    discount = 50*0.15; 
    roomCost = 50; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "3" || pplCount === "4" && discYes === "No" && viewYes === "Yes") { 
    discount = 60*0.10; 
    roomCost = 60; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "5" || pplCount === "6" && discYes === "No" && viewYes === "Yes") { 
    discount = 70*0.05; 
    roomCost = 70; 
    viewCost = (roomCost*0.10); 
    finalRoomCost = roomCost + viewCost; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "1" || pplCount === "2" && discYes === "No" && viewYes === "No") { 
    finalRoomCost = 50; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "3" || pplCount === "4" && discYes === "No" && viewYes === "No") { 
    finalRoomCost = 60; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "5" || pplCount === "6" && discYes === "No" && viewYes === "No") { 
    finalRoomCost = 70; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "1" || pplCount === "2" && discYes === "Yes" && viewYes === "No") { 
    discount = 50*0.15; 
    roomCost = 50; 
    viewCost = (roomCost*0.10); 
    roomCost = roomCost - discount; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "3" || pplCount === "4" && discYes === "Yes" && viewYes === "No") { 
    discount = 60*0.10; 
    roomCost = 60; 
    finalRoomCost = roomCost - discount; 
    document.write(endString + finalRoomCost); 
} 
else if(pplCount === "5" || pplCount === "6" && discYes === "Yes" && viewYes === "No") { 
    discount = 70*0.05; 
    roomCost = 70; 
    finalRoomCost = roomCost - discount; 
    document.write(endString + finalRoomCost); 
} 
+1

如果你確切地告訴使用哪個if-else對導致你的問題,它會非常有幫助。 –

+0

只是想知道,但你爲什麼要在使用'=='和'==='之間切換。大概堅持'==='。 – Ian

+0

給我們一個失敗的用例... – Populus

回答

0

我想你的條件分組存在一些問題。所以請檢查你的條件,如下所示,我認爲這可能會解決你的問題。

if((pplCount === "1" || pplCount === "2") && (discYes === "Yes" && viewYes === "Yes")) 
{ 
...... 
...... 
} 
else if() 
{ 
} 
+0

那麼現在它不顯示任何輸出,嗯... – minecraftModder

+0

@minecraftModder看到[this](http://jsfiddle.net/XAsX3/)正在工作。我只是用你的代碼來演示工作條件。但是你應該爲你所有的if/elseif條件做到這一點。 –

2

&&操作地結合不同於||更緊密,這意味着

if(pplCount == "1" || pplCount == "2" && discYes == "Yes" && viewYes == "Yes") { 

被解釋爲

if(pplCount == "1" || ((pplCount == "2" && discYes == "Yes") && viewYes == "Yes")) { 

因此,邏輯的該分支將被採用時 「pplCount」是1,不管「discYes」和「viewYes」的值如何。

這就像普通的代數約定(紙和鉛筆,忘記JavaScript),其中乘法優先於加法。當你寫

2x + 5 

然後每個人都知道你的意思是「乘以2 x,則加5」,而不是「加五到X,再乘上2」。

+1

(y)很好的描述給學生,而不僅僅是說_look into operator precedence_ – Ejaz