鱼C论坛

 找回密码
 立即注册
查看: 3934|回复: 9

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

[复制链接]
发表于 2020-3-30 15:08:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码是这样的:
        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的值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 15:11:05 | 显示全部楼层
应该是 if b == false吧
没学过Java,但看各种语言的样子,应该是==
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 15:32:32 | 显示全部楼层
应该是:if(b==false),=是赋值的,==是判断是否相等的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 21:00:55 | 显示全部楼层
首先你if第一句就是赋值把false赋值给了b,然后b就是false,既然是假那么if和elseif后面的语句怎么会执行,然后碰到个非b为真,就执行语句输出C。
整个语句结束。你要注意if括号里面要表示判断是是否等于是==,不是=
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-31 17:38:18 | 显示全部楼层
Love/小/wei 发表于 2020-3-30 21:00
首先你if第一句就是赋值把false赋值给了b,然后b就是false,既然是假那么if和elseif后面的语句怎么会执行, ...

谢谢大佬解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 08:20:14 | 显示全部楼层
在第一个if条件里你把false赋值给了b,条件false所以a不输出,然后继续第二个if条件,b在第一个里面被赋值为了false所以第二个还是false,不输出b,继续第三个if条件,!就是和条件相反的意思,不是b的,也就是不是false,不是false那就是true了,条件为true,所以输出c,到这里就停了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-24 18:50:57 | 显示全部楼层
=是赋值用的呀,第一个语句你直接让b等于false了,所以第一个语句没有执行,执行的是第三个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-10 09:46:04 | 显示全部楼层
楼主,你忽视了一个东西。我理解你的意思,你把布尔值当作判断条件,可是,布尔类型的值只有True和False呀!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 00:00:01 | 显示全部楼层
真香定理 发表于 2020-4-24 18:50
=是赋值用的呀,第一个语句你直接让b等于false了,所以第一个语句没有执行,执行的是第三个

???难道不应该是给b定义了true么??怎么是false了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-9 20:41:57 | 显示全部楼层
一开始的b是全局变量,给的赋值是true,但第一个if又把false赋值给b,但是b不可更改,就有了局部变量b,且赋值为false,所以第二个if判断俩b是否一致,不一致,所以就直接到第三个else if判断一致,所以输出c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 19:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表