Java while 循环处理 netbean 错误

标签 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") ){

}

最佳答案

逻辑错误,遭受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/

相关文章:

java - 将秒转换为小时、分钟和秒

java - 将 java.util.Observable 与 MVC java 一起使用

java - 使用默认数据填充 sqlite 数据库时的最佳做法是什么?

Python:查找从今天开始两个月开始的日期并从星期一开始

java - 使用流对 BlockRealMatrix 对象的相应行进行平均

c++ - 无法设置用户可以输入的数字范围

java - 减少方法中的 for 循环次数

PHP 数组转换为 Javascript 数组

java - 用于处理/Java 中的金字塔金字塔的 For 循环

java - while循环中的递增操作(java)