我知道這是一個重復的問題,但我的問題更多地涉及布爾運算符:我正在構建一個簡單的石頭、紙、剪刀游戲。每個玩家必須輸入“R”、“P”或“S”。這個簡單的 if 語句if (!p1Input.equals("R") || !p1Input.equals("P") || !p1Input.equals("S")) { System.out.println("Player one, not a valid input.")}如果字符串不是這三個字母,則應該運行 print 語句。但是,即使字符串等于其中一個字母,它仍然會打印出無效的輸入?;蛘撸铱梢宰鰅f (p1Input.equals("R") || p1Input.equals("P") || p1Input.equals("S"))這可行,但我需要將玩家 2 的輸入與if (p1Input.equals("R") || p1Input.equals("P") || p1Input.equals("S") && p2Input.equals("R") || p2Input.equals("P") || p2Input.equals("S"))但如果兩個玩家輸入都不是 R、S 或 P,則該語句僅打印無效。我不確定哪個運算符 && 或 || 使用和在哪里。最好我想使用“不等于條件”
2 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
這是您的布爾邏輯的問題?;旧?,在檢查輸入時,您是在對您的程序說:“如果輸入不同于 R或P或S,則它是無效的”。好吧,假設用戶鍵入“P”?!癙”不同于“R”,也不同于“S”,所以你的程序會認為它是無效的。相反,將“OR”運算符 ( ||) 換成“AND”運算符 ( &&),如下所示:
if (!p1Input.equals("R") && !p1Input.equals("P") && !p1Input.equals("S")) {
System.out.println("Player one, not a valid input.")
}
現在,您正在告訴您的程序,當輸入同時與“R” 、 “P”和“S”不同時,輸入是無效的(因此它不能是這些字母中的任何一個)。

烙印99
TA貢獻1829條經驗 獲得超13個贊
或者,您可以嘗試使用正則表達式 as 的解決方案::if(!p1Input.matches("P|R|S"))
當輸入無效時,將滿足此條件,即P, R or S
. 同樣,您也可以為 player2 合并邏輯。
希望這可以幫助。
添加回答
舉報
0/150
提交
取消