如何检查是否由用户输入的字符串是在Java中的特定字母?

问题描述 投票:0回答:2

我知道这样一个重复的问题,但我的问题涉及多个与布尔运算符:我建立一个简单的石头,剪子,布的游戏。每个玩家必须输入 “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.我不知道哪个操作符&&或||用在哪里。最好我想用一个“不等于条件”

java if-statement boolean-operations
2个回答
2
投票

这是您的布尔逻辑有问题。基本上,检查输入的时候,你说你的计划:“如果输入是从R或P,S的不同,它是无效的”。好吧,让我们说,用户键入“P”。 “P”是从“R”的不同而不同,从“S”,所以你的程序将认为它是无效的。相反,贸为“与”运算符(||)的“OR”运算符(&&),如下图所示:

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

现在,你告诉你的程序的输入是无效的,当它是不同的,在同一时间,从“R”和“P”和“S”(所以它不能是任何字母)。


0
投票

或者,您可以使用正则表达式作为尝试的解决方案: if(!p1Input.matches("P|R|S")):该条件将得到满足,当输入比P, R or S无效即其他。同样,您可以将逻辑player2为好。 希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.