繁体   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