猿问

如何检查用户输入的字符串是否是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,则该语句仅打印无效。我不确定哪个运算符 && 或 || 使用和在哪里。最好我想使用“不等于条件”


慕姐8265434
浏览 147回答 2
2回答

胡子哥哥

这是您的布尔逻辑的问题。基本上,在检查输入时,您是在对您的程序说:“如果输入不同于 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”不同时,输入是无效的(因此它不能是这些字母中的任何一个)。

烙印99

或者,您可以尝试使用正则表达式 as 的解决方案::if(!p1Input.matches("P|R|S"))当输入无效时,将满足此条件,即P, R or S. 同样,您也可以为 player2 合并逻辑。希望这可以帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答