2016-02-05 124 views
0

我想弄清楚如何比較if語句中的字符串。我的大部分代碼都可以忽略,但在上下文中是有用的。我試圖給我的簡單的岩石,紙張,剪刀遊戲添加一條消息,以便當有人輸入除岩石,紙張或剪刀以外的字符串時。有人能告訴我在星號附近有什麼錯誤嗎?在IF語句中比較字符串與邏輯運算符

var userChoice = prompt("Do you choose rock, paper or scissors?"); 

var computerChoice = Math.random(); 

if (computerChoice < 0.34) { 
    computerChoice = "rock"; 
} else if(computerChoice <= 0.67) { 
    computerChoice = "paper"; 
} else { 
    computerChoice = "scissors"; 
} console.log("Computer: " + computerChoice); 

var compare = function (choice1, choice2) { 
    if (choice1 === choice2) { 
     return "The result is a tie!"; 
    } 
**else if (choice1 !== "rock" || "paper" || "scissors") { 
    return "Your only options are rock, paper, or scissors you friggin plebian!"; 
}** 
else if (choice1 === "rock") { 
    if (choice2 === "scissors") { 
     return "Rock wins!"; 
    } 
    else { 
     return "Paper wins!"; 
    } 
} 
else if (choice1 === "paper") { 
    if (choice2 === "rock") { 
     return "Paper wins!"; 
    } 
    else { 
     return "Scissors wins!"; 
    } 
} 
else if (choice1 === "scissors") { 
    if (choice2 === "paper") { 
     return "Scissors wins!"; 
    } 
    else { 
     return "Rock wins!"; 
    } 
} 

};

compare (userChoice, computerChoice); 

回答

3
// ... 
else if (choice1 !== "rock" || choice1 !== "paper" || choice1 !== "scissors") { 
    return "Your only options are rock, paper, or scissors you friggin plebian!"; 
}  
// ... 

布爾表達式不讀,因爲我們可以用英語說出來,即「選擇是不會動搖或紙張或剪刀」。將「選擇」作爲布爾值進行評估對於某些語言來說是一個完美的句法上有效的事情,所以請注意記住愚蠢地重複參數。否則,這些是需要一段時間才能找到的錯誤類型。 ;)

+0

我花了幾個讀數意識到你不是在叫我愚蠢的,而是語法。我需要一些睡眠,所以我可以繼續學習,而不是把自己的頭撞到我爲自己創造的問題上。 感謝大家誰指出什麼是一個愚蠢的錯誤,但只是學習的另一個步驟。 –

+0

@RanmaSaotome哈!我知道這種感覺很好。它發生在我們最好的人身上。有時在10分鐘內做完全不同的事情會有所幫助。 – Neil

1

else if (choice1 !== "rock" || "paper" || "scissors")應該是:

else if (choice1 !== "rock" || choice1 !== "paper" || choice1 !== "scissors")

2

嘗試:

else if (choice1 !== "rock" || choice1 !== "paper" || choice1 !== "scissors") 

你的說法不編譯爲 「選擇1不等於搖滾,紙張或剪刀。」

編譯器讀取它爲:

選擇1不等於搖滾

OR

OR

剪刀

邏輯運算後的各部分必須評估爲布爾值,所以它如果它不是搖滾的話,它只會匹配字符串,後面的兩個字符不會匹配任何內容。