黑马程序员技术交流社区

标题: 帮忙看看这一题选什么,为啥勒 [打印本页]

作者: BG6FVG    时间: 2015-8-28 22:31
标题: 帮忙看看这一题选什么,为啥勒
下面程序执行的结果是?()
boolean b=true;
if(b=false)
{
    System.out.println("a");
}
else if(b)
{
    System.out.println("b");   
}
else if(!b)
{
    System.out.println("c");
}
else
{
    System.out.println("d");
}
A.  a   
B.  b  
C.  c
D.  d


作者: 云沾衣。    时间: 2015-8-28 23:39
选B,水水,握下手。
作者: 姜群    时间: 2015-8-28 23:54
选B,因为b是true!=flase,所以判断语句不走A,B的话,b是true,执行B语句然后直接跳出if语句了,C的话,b是true,!b就是flase所以不选C
作者: 何时指点江山    时间: 2015-8-28 23:56
果断的选b啊,记住只要条件满足就不执行下一个了
作者: 喵小莫    时间: 2015-8-29 00:02
选B,注意b=false,b被重新赋值了就行
作者: 黄胖胖    时间: 2015-8-29 09:29
class Demo{
       public static void main (String args[]){
     boolean b=true;
if(b=false)//false
{
    System.out.println("a");
}
else if(b)
{
    System.out.println("b");   
}
else if(!b)//!true=false 结果是c
{
    System.out.println("c");
}
else
{
    System.out.println("d");
}
      

        }



   
}
作者: fantianfei    时间: 2015-8-29 09:45
真的嘛呢??
作者: 荣斌    时间: 2015-8-29 09:55
a()条件表达式是farse,b()也是farse,ca()条件事true 所以答案选c
作者: BG6FVG    时间: 2015-8-29 10:43
云沾衣。 发表于 2015-8-28 23:39
选B,水水,握下手。

是B么大哥??????????
作者: ln0491    时间: 2015-8-29 10:45
if(b=false)这里应该是b==false吧
作者: BG6FVG    时间: 2015-8-29 10:45
姜群 发表于 2015-8-28 23:54
选B,因为b是true!=flase,所以判断语句不走A,B的话,b是true,执行B语句然后直接跳出if语句了,C的话,b是 ...

B重新赋值了吧,应该是C吧
作者: BG6FVG    时间: 2015-8-29 10:46
喵小莫 发表于 2015-8-29 00:02
选B,注意b=false,b被重新赋值了就行

应该选括号里面是true的 ,应为B重新赋值了,所以该是C吧
作者: BG6FVG    时间: 2015-8-29 10:47
黄胖胖 发表于 2015-8-29 09:29
class Demo{
       public static void main (String args[]){
     boolean b=true;

对的 应该就是B吧 ,想了好久才明白的
作者: BG6FVG    时间: 2015-8-29 10:48
荣斌 发表于 2015-8-29 09:55
a()条件表达式是farse,b()也是farse,ca()条件事true 所以答案选c

对的,兄弟,我昨天自习的时候搞了半天的
作者: kevin986745zk    时间: 2015-8-29 10:49
一下就看出来了,选择B
作者: BG6FVG    时间: 2015-8-29 10:50
ln0491 发表于 2015-8-29 10:45
if(b=false)这里应该是b==false吧

是的呢 ,运行了 选C 所以应该就是这样解释的
作者: BG6FVG    时间: 2015-8-29 10:51
kevin986745zk 发表于 2015-8-29 10:49
一下就看出来了,选择B

对么,如果你很自信,还是打出代码,电脑运行下试试吧
作者: BG6FVG    时间: 2015-8-29 10:53
fantianfei 发表于 2015-8-29 09:45
真的嘛呢??

是的。。。。。。。。。。。。。
作者: 姜群    时间: 2015-8-29 11:28
他是在if()里赋值的,不会影响整体啊,
作者: BG6FVG    时间: 2015-8-29 11:30
姜群 发表于 2015-8-29 11:28
他是在if()里赋值的,不会影响整体啊,

我也是菜鸟,但是计算机结果显示确实是的。后来重新赋值了
作者: 姜群    时间: 2015-8-29 11:34
BG6FVG 发表于 2015-8-29 11:30
我也是菜鸟,但是计算机结果显示确实是的。后来重新赋值了

那这么说选C喽?又涨姿势了
作者: BG6FVG    时间: 2015-8-29 11:35
姜群 发表于 2015-8-29 11:34
那这么说选C喽?又涨姿势了

哈哈 是的 涨姿势了
作者: KALF    时间: 2015-8-29 11:35
区别在于第一个  = 于号上面。 一个=是赋值  所以是C  如果是两个=于号 就是B~
作者: 姜群    时间: 2015-8-29 11:37
KALF 发表于 2015-8-29 11:35
区别在于第一个  = 于号上面。 一个=是赋值  所以是C  如果是两个=于号 就是B~ ...

一针见血,经典评论
作者: 刘登飞    时间: 2015-8-29 13:47
呵呵  大多数选B的误区就在于   if   的判断条件,开始赋值给b的是 true 是正确的  ,但是当 if 结构开始作用时,第一个条件不满足,就顺序往下进行,但是条件还是 b = false, 所以  B  选项是错误的,然后顺序往下进行,当判断到  C  选项的时候  !b 就相当于 !false = true ,所以此时  b  的值才是  true  所以结束跳出,输出  c  
作者: 黄胖胖    时间: 2015-8-29 15:12
BG6FVG 发表于 2015-8-29 10:47
对的 应该就是B吧 ,想了好久才明白的

选C,具体前面都给出叻
作者: BG6FVG    时间: 2015-8-29 22:48
刘登飞 发表于 2015-8-29 13:47
呵呵  大多数选B的误区就在于   if   的判断条件,开始赋值给b的是 true 是正确的  ,但是当 if 结构开始作 ...

谢谢说的很详细
作者: 平爷    时间: 2015-8-29 23:00
不懂   ,    感觉很不懂
作者: BG6FVG    时间: 2015-8-29 23:02
平爷 发表于 2015-8-29 23:00
不懂   ,    感觉很不懂

25#说的最是详细,好好看看吧兄弟
作者: 平爷    时间: 2015-8-29 23:12
BG6FVG 发表于 2015-8-29 23:02
25#说的最是详细,好好看看吧兄弟

兄弟,我就想水个贴,你这么一说感动的不看就对不起你的提醒了
作者: BG6FVG    时间: 2015-8-29 23:14
平爷 发表于 2015-8-29 23:12
兄弟,我就想水个贴,你这么一说感动的不看就对不起你的提醒了

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。







你来




我保证不弄死你
作者: 酒倌浪人    时间: 2015-8-29 23:51
选C,重新赋值了
作者: BG6FVG    时间: 2015-8-30 23:17
酒倌浪人 发表于 2015-8-29 23:51
选C,重新赋值了

似的 谢谢,明白了
作者: 代晃    时间: 2015-8-30 23:42
每句代码都读懂了就知道了
作者: BG6FVG    时间: 2015-8-30 23:44
代晃 发表于 2015-8-30 23:42
每句代码都读懂了就知道了

似的说得好
作者: 牛小爽    时间: 2015-8-31 00:20
选择答案B
作者: 不想睡    时间: 2015-8-31 08:54
选C,b=true,但走到if(b=false)这里时b又被重新赋值为false,所以前两步b的值都是false,第三步!b就是将b的值取反,所以!false=true,执行System.out.println("c");
作者: 董兴朋    时间: 2015-8-31 09:41
选择C,因为在第一个if的时候,b就变成了false,所以‘a’和‘b’不会输出,(!b)为真所以会输出‘c’。
作者: 寒星在天    时间: 2015-8-31 10:23
这个题使我们的周试题大坑注意官方答案CCCCC第一步是赋值()里边是false第二步里边b也是false第三部!b运算后是true结果选CCCCC
作者: lingxius    时间: 2015-8-31 10:57
选C,if(b=false),这里给b赋值了,b变为false了。
作者: MengYa    时间: 2015-8-31 13:01
注意第一个if,里面是赋值语句,b从那时起就是false了
作者: Integer    时间: 2015-8-31 14:39
姜群 发表于 2015-8-29 11:28
他是在if()里赋值的,不会影响整体啊,

为什么在if的条件判断中赋值不会影响整体呢,你把概念搞混淆了吧。
代码的第2行,b = false 把b的值给重置为false了,所以此题选c。
作者: vipsong    时间: 2015-8-31 15:09
是个坑吗?
作者: 血马雄风    时间: 2015-8-31 15:16
答案是C,b是一个成员变量,并且在第一个判断语句中重新赋值
作者: chasingw    时间: 2015-8-31 17:36
b=false 。。。。c
作者: BG6FVG    时间: 2015-8-31 22:18
chasingw 发表于 2015-8-31 17:36
b=false 。。。。c

对头!!!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2