我正在尝试实现一个需要循环的程序:
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") ){
}
答案 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;
}