【问题标题】:why does it not break out of the loop whatever is the input为什么它不跳出循环无论输入是什么
【发布时间】:2019-09-23 15:33:34
【问题描述】:

无论输入是什么,它都不会破坏我尝试过的循环。

我尝试使用 switch 得到相同的结果;我只尝试了一个条件 (!answer.equalsIgnoreCase("y")) 没有 OR 并且它有效但不适用于两个条件。

public static void main(String[] args) {
    Scanner scn = new Scanner(System.in);


    //checking if the dog is barking
    System.out.println("is the dog is barking ?");
    String answer;
    do {
        System.out.println("write 'n' for no and 'y' for yes");
        answer = scn.next();
    } while( !answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n"));
    boolean dogBark=answer.equalsIgnoreCase("y");

我希望它在我输入 'y' 或 'n' 后立即完成 while loos,但它一遍又一遍地要求我输入。

【问题讨论】:

标签: java conditional-statements do-while


【解决方案1】:

虽然答案不是肯定的或答案不是否定的?

如果是,那么就不是。如果不是,那就不是。所以条件总是为真并且循环。

您可能想要使用! 运算符。

【讨论】:

  • euuu 我用过!answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n")) = 虽然不是 'y' 或虽然不是 'n' 但不会中断
【解决方案2】:
while( !answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n"));

出现此问题的原因是 do-while 循环使用 OR 语句检查这两个条件。

这样想,如果 Answer 等于“Y”,则满足条件以中断循环,但 OR 条件“N”仍处于活动状态,因此循环将继续。

do while 仅在继续循环之前检查以确保上述条件之一为假。

要解决此问题,请将 || 替换为 &&,如果输入 Y 或 N,则循环将中断,因为只有两个条件都为 false 时,循环才会继续。

【讨论】:

  • 不,如果我删除 NOT 它会给我完全相反的结果
  • 我已根据您的回复编辑了我的答案,我了解您现在想要做什么。
猜你喜欢
  • 2018-08-21
  • 2012-11-06
  • 1970-01-01
  • 2019-05-10
  • 2020-09-27
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多