黑马程序员技术交流社区

标题: 一道非常经典的基础题,大家可以尝试做做 [打印本页]

作者: 陈明佳    时间: 2015-5-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
作者: cat73    时间: 2015-5-28 22:33
b。。。。。。。。。。。。。。
作者: cat73    时间: 2015-5-28 22:34
其实代码简单整理下就清晰了
  1. if(true = false) {
  2.     System.out.println("a");
  3. } else if(true) {
  4.     System.out.println("b");        
  5. } else if(!true) {
  6.     System.out.println("c");
  7. } else {
  8.     System.out.println("d");
  9. }
复制代码

作者: thoris    时间: 2015-5-28 22:35
cat73 发表于 2015-5-28 22:33
b。。。。。。。。。。。。。。

是C。。。。。。
作者: 开弓没有回头箭    时间: 2015-5-28 22:38
是C吧。。。。
作者: 唐海    时间: 2015-5-28 22:56
  C  楼主你把二楼坑了
作者: 龙腾浩少    时间: 2015-5-28 22:59
thoris 发表于 2015-5-28 22:35
是C。。。。。。

这说明,还是有人会被坑的,哈哈
作者: Lucus    时间: 2015-5-28 23:09
表示做错了!!!
作者: 夜愿Relax    时间: 2015-5-28 23:13
额,求解释
作者: 陈明佳    时间: 2015-5-28 23:42
夜愿Relax 发表于 2015-5-28 23:13
额,求解释

因为if(b=false)已经将false赋值给了b,所以b=false;

作者: 陈明佳    时间: 2015-5-28 23:44
Lucus 发表于 2015-5-28 23:09
表示做错了!!!

下次努力吧,我也做错了
作者: 武汉小菜鸟    时间: 2015-5-28 23:58
这个题有陷阱,的看仔细了。
if(b=false) ,这时b被赋值为false了,等价于if(false),不执行
else if(b),等价于if(false),不执行
else if(!b) ,就执行了


大多数人会选B,是把第一句话看成if(b==false)

所以,改一下,就B了
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");
}
作者: 王显军    时间: 2015-5-29 00:07
尽量吧 大括号链接在 小括号的右侧,接上。因为源代码就是这么写的。:lol
作者: luxinyu    时间: 2015-5-29 00:13
d么。。。=号是赋值。。。这种挖坑题做起来太坑人了
作者: 林思奇    时间: 2015-5-29 00:46
if(b=false)中赋值了  答案c
作者: guoyangpeng    时间: 2015-5-29 06:41
新手,复习了!大坑
作者: lanlianhuashi    时间: 2015-5-29 06:57
答案:C 因为第一个分支if(b=false),中条件表达式为赋值语句,将false赋值给b。所以b的值就为false了,依次从上往下执行到第三个分支即else if(!b)的条件表达式为true,故输出结果为c
作者: 半世心修    时间: 2015-5-29 08:40
其实逻辑清楚点一下就出来了C
作者: 夏尔    时间: 2015-5-29 09:06
表示做错了
作者: mgyyxhyz    时间: 2015-5-29 09:07
做错了,学习了    注意=和==
作者: 牧师1990    时间: 2015-5-29 09:45
表示中招了
作者: mmakun    时间: 2015-5-29 09:54
在第二个if中对b重新进行了赋值
作者: l598790586    时间: 2015-5-29 10:01
看来不只我一个不坑了,没注意只是=号
作者: tougboy    时间: 2015-5-29 10:06
转来转去眼转晕  
作者: 繁复    时间: 2015-5-29 11:18
好的吧   还是运算符的优先级问题
作者: guojiadui    时间: 2015-5-29 12:16
的确受教了
作者: edithe    时间: 2015-5-29 16:22
很明显是c吗。。。。。。
作者: 枕寒流    时间: 2015-5-29 16:28
c,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
作者: 志行    时间: 2015-5-29 16:33
好经典的题啊  
我果断的选b了  我果然基础不牢 啊
作者: David19910809    时间: 2015-5-29 16:37
C。。。。。。。。
作者: 星辉祝愿    时间: 2015-5-29 16:41
学习了,写代码还是要细心啊!
作者: 麦兜是个猪    时间: 2015-5-29 17:30
if中的b=false是吧false赋给b,所以if条件表达式结果是false,那就不会再if中的内容了,c中的!b就是true,所以应该是c,只有boolean型的能在if语句中进行赋值操作,其他的编译会报错
作者: 小车车    时间: 2015-5-29 18:26
我也做错了,原来有个陷进。。。




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