我们不能在java流程控制(for循环,while循环等)中使用 boolean 逻辑运算符(例如&,|,!,^等)???
我想打印1到100之间的所有偶数。所以我使用了下面的两个源代码。
import java.util.*;
class Example{
public static void main(String args[]){
int i=1;
while(i<100){
if(i%2==0)
System.out.print(i+" ");
i++;
}
}
}
此代码经过编译并打印 1 到 100 之间的所有偶数。
import java.util.*;
class Example{
public static void main(String args[]){
int i=1;
while(i<100 & i%2==0){
System.out.print(i+" ");
i++;
}
}
}
此代码编译时没有任何错误。但没有给出任何打印。
这是为什么呢? 我们不能在 while 循环中使用 boolean 逻辑运算符吗?
最佳答案
记住,while循环条件是继续循环的条件,这意味着当条件为假时,循环停止。
如果您否定第二个代码中的条件:
!(i<100 & i%2==0)
使用De Morgan's Law ,这相当于:
i>=100 | i%2!=0
或者用文字来说:
i
is greater than or equal to 100 ORi
is odd.
这是while循环的停止条件。好吧,i
最初是 1,这是奇数,因此循环甚至没有执行一次迭代就停止了。
也就是说,你不能将第一个代码重写为第二个代码。它们并不等同。 if
条件中出现的内容将出现在 if
条件中。您不能将其“合并”到 while
条件中,因为它们用于不同的目的。
我还推荐使用 &&
作为逻辑 AND,因为它仅在必要时计算正确的操作数。欲了解更多信息,请参阅What is the difference between & and && in Java?
关于java - java中用于流程控制的 boolean 逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60017718/