【问题标题】:How do I get out of this loop? (Java related)我如何摆脱这个循环? (Java相关)
【发布时间】:2021-03-11 11:41:12
【问题描述】:

我正在尝试编写一个简单的游戏,您可以在其中选择继续或最后退出。我写了这段代码,现在我陷入了一个循环。任何建议将不胜感激。谢谢!

System.out.println("Would you like to play again? Yes or No?");

            yesOrNo=input.next();

            while (!yesOrNo.equalsIgnoreCase("yes") || !yesOrNo.equalsIgnoreCase("no")) {
                    System.out.println("That is not a valid response. Please enter yes or no.");
                    yesOrNo = input.next();
            }

            if (yesOrNo.equalsIgnoreCase("Yes")){
                continueGame=true;
            } else{
                continueGame=false;
            }

【问题讨论】:

  • 查看循环条件。他们现在的方式,无论输入是什么,您都将进入循环。只有当输入不是“yes”并且输入不是“no”时才想输入它。
  • !yesOrNo.equalsIgnoreCase("yes") || !yesOrNo.equalsIgnoreCase("no") yesOrNo 的值,这会导致这种情况变成false,你的错误应该会变得很明显
  • !yesOrNo.equalsIgnoreCase("yes") && !yesOrNo.equalsIgnoreCase("no")

标签: java string loops


【解决方案1】:

原因:

看到! 改变了检查的结果。因此,如果您输入 yes,则声明 yesOrNo.equalsIgnoreCase("yes") 为真,但声明 !yesOrNo.equalsIgnoreCase("yes") 为假。既然你想在yes 上运行,请不要在这部分检查中使用!

解决方案:

你可以这样做

while (yesOrNo.equalsIgnoreCase("yes")) { 仅在您输入 yes 时运行,在所有其他单词上退出

while (!yesOrNo.equalsIgnoreCase("no")) { 始终运行,只有在您输入 no 时才会退出

while (yesOrNo.equalsIgnoreCase("yes") || !yesOrNo.equalsIgnoreCase("no")) { 与第一个非常相似,但会继续使用不同的单词/拼写错误,例如 'abc'

让它工作。

【讨论】:

    【解决方案2】:

    尝试使用&& 而不是||

    while (!yesOrNo.equalsIgnoreCase("yes") && !yesOrNo.equalsIgnoreCase("no")) {
       //do something
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 2022-12-02
      相关资源
      最近更新 更多