mopp163 发表于 2020-3-30 15:08:30

if...else if...else条件判断语句没看懂

代码是这样的:
        boolean b=true;
                if(b=false) {                  // 判断条件1
               System.out.println("a");
                } else if(b) {                  // 判断条件2
               System.out.println(b);
                } else if(!b) {                  // 判断条件3
               System.out.println("c");
                } else {
               System.out.println("d");
                }

我的理解:定义一个布尔变量b的值是true,第一个判断条件:b的值是不是false?如果是,打印输出文本a;如果不是,判断条件2:true吗?,如果是,输出b的值;如果不是,判断条件3:false吗?如果是,输出文本c;如果不是,输出文本d。
请问,我的理解对吗?最终为什么会执行了判断语句3输出文本c,而不是执行判断语句2输出b的值?{:10_266:}

qiuyouzhi 发表于 2020-3-30 15:11:05

应该是 if b == false吧
没学过Java,但看各种语言的样子,应该是==

悠悠2264 发表于 2020-3-30 15:32:32

应该是:if(b==false),=是赋值的,==是判断是否相等的

Love/小/wei 发表于 2020-3-30 21:00:55

首先你if第一句就是赋值把false赋值给了b,然后b就是false,既然是假那么if和elseif后面的语句怎么会执行,然后碰到个非b为真,就执行语句输出C。
整个语句结束。你要注意if括号里面要表示判断是是否等于是==,不是=

mopp163 发表于 2020-3-31 17:38:18

Love/小/wei 发表于 2020-3-30 21:00
首先你if第一句就是赋值把false赋值给了b,然后b就是false,既然是假那么if和elseif后面的语句怎么会执行, ...

谢谢大佬解答!

与时舒卷 发表于 2020-4-9 08:20:14

在第一个if条件里你把false赋值给了b,条件false所以a不输出,然后继续第二个if条件,b在第一个里面被赋值为了false所以第二个还是false,不输出b,继续第三个if条件,!就是和条件相反的意思,不是b的,也就是不是false,不是false那就是true了,条件为true,所以输出c,到这里就停了。

真香定理 发表于 2020-4-24 18:50:57

=是赋值用的呀,第一个语句你直接让b等于false了,所以第一个语句没有执行,执行的是第三个

苏格拉没有底呀 发表于 2020-5-10 09:46:04

楼主,你忽视了一个东西。我理解你的意思,你把布尔值当作判断条件,可是,布尔类型的值只有True和False呀!

maomaomiao 发表于 2020-5-11 00:00:01

真香定理 发表于 2020-4-24 18:50
=是赋值用的呀,第一个语句你直接让b等于false了,所以第一个语句没有执行,执行的是第三个

???难道不应该是给b定义了true么??怎么是false了。。

迟到丶爱 发表于 2020-10-9 20:41:57

一开始的b是全局变量,给的赋值是true,但第一个if又把false赋值给b,但是b不可更改,就有了局部变量b,且赋值为false,所以第二个if判断俩b是否一致,不一致,所以就直接到第三个else if判断一致,所以输出c
页: [1]
查看完整版本: if...else if...else条件判断语句没看懂