[英]How to check if a correct character was entered by a user in a string in 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.