Java while循环使用netbean错误

时间:2013-12-08 22:28:33

标签: java loops while-loop equals

我正在尝试实现一个需要循环的程序:

Scanner scan=new Scanner(System.in);
String word= scan.next().toLowerCase();
while !(word.equals("mot1") || word.equals("mot2") || word.equals("motmot") || word.equals("motmotmot") ){
word= word.next().toLowerCase();
}

它有效,但它用红色错误小波强调了while条件!!

错误显示在边缘左侧,带有感叹号(!)并表示 '''被驱逐 ')'预期

所以我一直试图将括号放在所有意义上,唯一一次关闭小波就是它不再起作用的情况,并且有一个无限循环!

我不知道为什么?

干杯

此外:

当小波关闭但不会做预期但逻辑在这里时:

 String word= scan.next().toLowerCase();
           while (!word.equals("onetime") || !word.equals("daily") || !word.equals("weekly") || !word.equals("monthly") ){

}

2 个答案:

答案 0 :(得分:1)

逻辑错误,它受the same issue as I answered here的影响。

即,

!x || !y || !z

相当于(De Morgan's Law

!(x && y && z)

因为(在这种情况下),x,y和z可以永远都不是真的同时结果是:

!(false) -> true

正确的逻辑是,!(x || y || z)或再次应用规则!x && !y && !z


无论如何,我建议使用一个利用上述逻辑的函数来编写它。

while (!validChoice(word)) {
    // ..
}

boolean validChoice (String word) {
    return word.equals(..) || word.equals(..) ..;
}

..因为这是我如何把事情记在脑后。

答案 1 :(得分:0)

您的错误与代码格式有关。分配的语法不正确。

String word;

while (!word.equals("onetime") || !word.equals("daily") || !word.equals("weekly") || !word.equals("monthly") ){
    word = input.next();
    // do something;
}