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

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

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

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

  1. public class notes {
  2. public static void main(String[] args) {
  3. boolean[] test = {false, false, true};
  4. if (test[0] = false) {
  5. System.out.println("yes");
  6. } else {
  7. System.out.println("no");
  8. }
  9. }
  10. }

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

vsaztqbk

vsaztqbk1#

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

  1. public class notes {
  2. public static void main(String[] args) {
  3. boolean[] test = {false, false, true};
  4. // if false do it.
  5. if(!test[0]) {
  6. System.out.println("yes");
  7. } else {
  8. System.out.println("no");
  9. }
  10. }
  11. }
8i9zcol2

8i9zcol22#

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

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

whitzsjs3#

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

  1. public class notes {
  2. public static void main(String[] args) {
  3. boolean[] test = {false, false, true};
  4. if(test[0] == false) { //you had a mistake here.
  5. System.out.println("yes");
  6. } else {
  7. System.out.println("no");
  8. }
  9. }
  10. }

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

展开查看全部

相关问题