在java的if语句中boolean是如何工作的?

drnojrws  于 2021-07-12  发布在  Java
关注(0)|答案(3)|浏览(241)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

5个月前关门了。
改进这个问题
我在努力理解 for 循环及其工作方式 boolean s。我写了几行简单的代码,我不太明白为什么输出是这样。

public class notes { 
    public static void main(String[] args) {
        boolean[] test = {false, false, true};
        if (test[0] = false) {
           System.out.println("yes");
        } else {
           System.out.println("no");
        }
    }
}

我假设因为测试数组中索引0处的布尔值为false,那么if语句也应该打印yes。但是,它打印的不是。这是为什么?

vsaztqbk

vsaztqbk1#

像这样试试。因为条件会导致一个true或false条件,所以您可以单独使用布尔值。因为您希望它在false时打印yes,所以需要将其设置为true,这样条件语句就会成功。因此,通过在bang前面加前缀来反转条件 ! (又名not操作符)。

public class notes {
    public static void main(String[] args) {
       boolean[] test = {false, false, true};

       // if false do it.
       if(!test[0]) {
         System.out.println("yes");  
       } else {
          System.out.println("no");
       }
     }
}
8i9zcol2

8i9zcol22#

您正在分配 false 数组的第一个元素,其计算结果为 false 并导致 else 要执行的分支。你需要使用 == 用于比较和 boolean s、 您可以简单地使用逻辑not运算符( ! )检查是否是 false . 比较布尔值总是多余的,因为比较的结果是布尔值。

if(!test[0]) {
  System.out.println("yes"); 
} else {
  System.out.println("no");
}
whitzsjs

whitzsjs3#

您正在使用赋值运算符 = ,而不是使用比较运算符 == ,因此您不进行比较,而是指定 false 值与数组的索引0相同 false 然后作为布尔值计算;因此, else 块执行。
请尝试以下操作:

public class notes { 

    public static void main(String[] args) {

        boolean[] test = {false, false, true};

        if(test[0] == false) { //you had a mistake here.
           System.out.println("yes");
        } else {
           System.out.println("no");
        }
    }
}

注意,您也可以使用 ! 一元运算符,如 !booleanValue . 对你来说 !test[0] .
看看java中的操作符。

相关问题