java 中流量控制的布尔逻辑运算符

Boolean logical operators for flow controls in java

我们不能在 java 流程控制(for 循环、while 循环等)中使用布尔逻辑运算符(例如 &、|、!、^ 等)吗???

我想打印 1 到 100.So 之间的所有偶数 我在下面使用了两个源代码。

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++;
            }
    }
}

这段代码没有任何编译 error.but 没有给出任何打印。

这是为什么? 我们不能在 while 循环中使用布尔逻辑运算符吗?

错误在这一行:

while(i<100 & i%2==0){

& 应替换为 &&:

while(i<100 && i%2==0){

你已经掌握了逻辑运算符... and 它是一个逻辑运算符 只有当 2 个运算符为真时它才能为真(x>5 和 y<7)如果只有 x>5 为真且 y<7 为真则为真是的,这就是给我们条件是真的,但如果其中一个未被验证,则条件是假的…… 但是如果我们有 运算符,则只有其中一个为真或两个都为真时,条件才为真...... 所以让我们解释一下你的代码。 您有条件(i<100 且 i%2==0)。 0%2 ==0 所以它是真的,当然 i<100 所以虽然 returns 是真的(同时都是真的)但是当 i==1 这里我们有一个问题 1%2!=0 所以i<100 是 true 但 i%2==0 是 false 所以我们得到 **true && false ** 结果是 false 。 (true && true==true) (false && true==false) (false and false==false) (true ||true==true) (true || false==true) (false||false==false )

记住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 条件中。你不能"merge"把它变成while条件,因为它们的用途不同。

我还推荐 && 用于逻辑与,因为它只在必要时计算正确的操作数。有关详细信息,请参阅 What is the difference between & and && in Java?