黑马程序员技术交流社区

标题: 新手求教一个if的问题 [打印本页]

作者: 超级小鱼    时间: 2016-1-12 21:28
标题: 新手求教一个if的问题
今天考试做题
  1. boolean b=true;
  2. if(b=false)
  3. {
  4.         System.out.println("a");
  5. }
  6. else if(b)
  7. {
  8.         System.out.println("b");       
  9. }
  10. else if(!b)
  11. {
  12.         System.out.println("c");
  13. }
  14. else
  15. {
  16.         System.out.println("d");
  17. }

复制代码

答案为什是c呢,为什么不输出b,是在不太懂了
作者: OliverLC    时间: 2016-1-12 22:35
if语句只有在判断语句也就是()内为true时才执行if中的执行语句~~
作者: 擎天柱    时间: 2016-1-12 22:51
第一个条件是在赋值吗?!
作者: 放养的饼干    时间: 2016-1-12 23:27
楼主请看你代码第二行,此处 b = false将b的值变为了false,所以在第六行的时候实际是if(false),所以不执行第八行,
同理,第10行的时候,b是false,!b就是true,所以就输出C咯,这是个坑,以后记住
作者: OliverLC    时间: 2016-1-12 23:35
擎天柱 发表于 2016-1-12 22:51
第一个条件是在赋值吗?!

如果他说 b = false 当然是赋值  参考:b == false 这才是一个需要判断的语句 而这里如果是b==false的话判断结果还是个false,所以也不执行里面的执行语句., 而b=false就相当于判断条件直接是false了~
作者: 彬小彬    时间: 2016-1-12 23:53
给你加了注释不知道你能看懂不
  1. class Test {
  2.         public static void main (String[] args) {

  3.                 boolean b=true;
  4.                 if(b=false) {//这句是赋值,赋值之后b是false
  5.                         System.out.println("a");
  6.                 } else if(b) {//b是false不进入循环
  7.                         System.out.println("b");        
  8.                 } else if(!b) {//!b是true
  9.                         System.out.println("c");
  10.                 } else {
  11.                         System.out.println("d");
  12.                 }
  13.         }
  14. }
复制代码

作者: keaitao0321    时间: 2016-1-13 11:49
果然是个坑




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