java - java中用于流程控制的 boolean 逻辑运算符

标签 java boolean-logic flow-control

我们不能在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 OR i 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/

相关文章:

java - 在虚拟机中从 Linux 启动 Windows 程序。

boolean-logic - 有什么好的 bool 表达式简化器吗?

c++ - bool 表达式中的整数溢出

javascript - JavaScript 中的正则表达式

sockets - 当数据发送速度快于处理速度时,套接字将如何操作?

vba - 嵌套的 "if"和使用 "if x and y and z and .."在速度方面有区别吗?

java - 嵌套 c :foreach in jSTL

java - 懒人登录

java - InterruptedException的原因

jmeter - 如何在JMeter中限制http请求的速度(或流量控制)