簡體   English   中英

如何檢查用戶輸入的字符串在Java中是否是某個字母?

[英]How to check if a string entered by a user is a certain letter in Java?

我知道這是一個重復的問題,但我的問題更多地涉及布爾運算符:我正在構建一個簡單的石頭,紙,剪刀游戲。 每個玩家必須輸入“ R”,“ P”或“ S”。

這個簡單的if語句

if (!p1Input.equals("R") || !p1Input.equals("P") || !p1Input.equals("S")) {
    System.out.println("Player one, not a valid input.")
}

如果字符串不是這三個字母,則應運行print語句。 但是,即使字符串等於字母之一,它仍然會打印出無效的輸入。

或者,我可以做

if (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時才打印無效。我不確定哪個運算符&&或|| 在哪里使用。 最好我要使用“不等於條件”

您的布爾邏輯存在問題。 基本上,當檢查輸入時,您對程序說:“如果輸入與R P S不同,則它無效”。 好吧,假設用戶鍵入“ P”。 “ 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”不同的輸入是無效的(因此不能是任何字母)。

或者,您可以使用regex嘗試解決方案:
if(!p1Input.matches("P|R|S")) :當輸入無效(即P, R or S if(!p1Input.matches("P|R|S"))時,將滿足此條件。 同樣,您也可以為player2合並邏輯。
希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM