【问题标题】:How to check if a string entered by a user is a certain letter in Java?如何检查用户输入的字符串是否是Java中的某个字母?
【发布时间】:2019-02-11 03:51:54
【问题描述】:

我知道这是一个重复的问题,但我的问题更多地涉及布尔运算符:我正在构建一个简单的石头剪刀布游戏。每个玩家必须输入“R”、“P”或“S”。

这个简单的 if 语句

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

如果字符串不是这三个字母,则应该运行打印语句。但是,即使字符串等于其中一个字母,它仍然会打印出无效的输入。

或者,我可以做到

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,则该语句仅打印无效。我不确定哪个运算符 && 或 ||使用和在哪里。最好我想使用“不等于条件”

【问题讨论】:

  • if (!p1Input.equals("R") && !p1Input.equals("P") && !p1Input.equals("S")),如果输入不是R 不是P不是S,则打印无效

标签: java if-statement boolean-operations


【解决方案1】:

你的布尔逻辑有问题。基本上,在检查输入时,您是在对您的程序说:“如果输入不同于 R or P or 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" and "P" and "S "(所以不能是这些字母中的任何一个)。

【讨论】:

    【解决方案2】:

    或者,您可以尝试使用正则表达式作为解决方案:
    if(!p1Input.matches("P|R|S")):当输入无效(即P, R or S 除外)时,将满足此条件。同样,您也可以为 player2 合并逻辑。
    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2011-04-03
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多