繁体   English   中英

为什么它不跳出循环无论输入是什么

[英]why does it not break out of the loop whatever is the input

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

我尝试使用开关相同的结果; 我只尝试了一个条件 (.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,但它一遍又一遍地要求我输入。

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

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

您可能想使用! 运营商。

while( !answer.equalsIgnoreCase("y") || !answer.equalsIgnoreCase("n"));

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM