While循环测试条件

时间:2019-05-05 05:22:09

标签: java while-loop

我正在尝试执行while循环,直到用户输入是或否。

为什么测试功能中不能有OR而不是AND?

使用OR时,它可以是yesno

System.out.print("Enter yes or no: ");
String answer = input.getNext();
while (!answer.equals("yes") && !answer.equals("no")) {
    System.out.println("Enter ONLY yes or no, please: ");
    answer = input.getNext();
}
System.out.println("Thank you!");

3 个答案:

答案 0 :(得分:0)

因为status基本上说redirect不是“ yes”而!answer.equals("yes") && !answer.equals("no")不是“ no”。

要使其成为“或”,您可以执行以下操作:

answer

这意味着,当以下条件不成立时;条件:answer为“是”或while(!(answer.equals("yes") || answer.equals("no"))) { } 为“否”

答案 1 :(得分:0)

while (!answer.equals("yes") && !answer.equals("no"))表示条件变为假时循环终止。根据de Morgan法律,!(!answer.equals("yes") && !answer.equals("no"))answer.equals("yes") || answer.equals("no")。也就是说,当答案是 是或否时,循环终止-这正是您想要的。

如果将&&更改为||,则当答案同时为“是”和“否”时,循环将终止,这是不可能的。

答案 2 :(得分:0)

如果使用短路或/和(||和&&),则系统不必评估整个表达式(如果不需要)。因此,如果用户输入“否”,则检查其是否为“是”的第一部分将评估为true。由于or条件只需要一个true即可评估为true,因此不会评估其他任何东西,只会返回。

您需要&&,因为您在说答案是否是,不是,则再次要求输入。以下是有关短路布尔运算符的更多信息:https://users.drew.edu/bburd/JavaForDummies4/ShortCircuitEval.pdf