我正在尝试实现一个需要循环的程序:
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") ){
}
最佳答案
逻辑错误,遭受the same issue as I answered here的困扰.
也就是说,
!x || !y || !z
相当于(by De Morgan's Law)
!(x && y && z)
因为(在本例中),x、y 和 z 不可能同时都为 true,结果是:
!(false) -> true
<小时/>
正确的逻辑是,!(x || y || z)
,或者再次应用规则,!x && !y && !z
.
无论如何,我建议使用一个利用上述逻辑的函数来编写它..
while (!validChoice(word)) {
// ..
}
boolean validChoice (String word) {
return word.equals(..) || word.equals(..) ..;
}
..因为这就是我把事情记在脑子里的方式。
关于Java while 循环处理 netbean 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20459997/