黑马程序员技术交流社区

标题: 比较简单的代码,烦请各位帮忙解答! [打印本页]

作者: Autism    时间: 2015-4-21 22:34
标题: 比较简单的代码,烦请各位帮忙解答!
class Op
{
        public static void main(String[] args)
        {
                boolean b=false;

        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?
作者: lai19    时间: 2015-4-21 22:39
输出c吧????
作者: 关山明月    时间: 2015-4-21 22:47
如果想输出a 就 b==false  你那if里是赋值符号
作者: 龙腾浩少    时间: 2015-4-21 22:53
  if(b=false)  
你这是赋值符号啊?
作者: flowerdance    时间: 2015-4-21 22:55
赋值符号 if那地一个 少写了一个等号哇
作者: 棉棉502    时间: 2015-4-21 22:56
输出c啊;
  if(b=false)   就是 if (false),所以不执行;
  else if(b) ,由于b已经被赋值为false了,所以也是 if(false);
  else if(!b), !b 就是true ,所以是 if(true),执行....
作者: fanxia_2007    时间: 2015-4-21 23:07
if(b=false)   就是 if (false),所以不执行;
   else if(b) ,由于b已经被赋值为false了,所以也是 if(false);
   else if(!b), !b 就是true ,所以是 if(true),执行....


条件表达式中都是()中为true才执行下一句。
作者: itheima_llt    时间: 2015-4-21 23:57
以后真的注意了。。。 楼主真好
作者: yelebron    时间: 2015-4-22 00:35
输出C吧!!!!!!!!!!
作者: Chans_宇    时间: 2015-4-22 00:53
if判断括号里的boolean类型值是true才执行相应大括号里的,而且下层判断条件的范围从逻辑上可以理解是已经排除上面的判断范围了,第一次判断是将b赋值为false,第二次感觉没啥意义:L,!b为true于是就执行了……
作者: 怀念子龙    时间: 2015-4-22 08:30
赋值符号啊。大哥
作者: WYKings    时间: 2015-4-22 09:40
class Test1 {
        public static void main(String[] args) {
                boolean b = false;

                if (b = false)        //这里的"="是表示的赋值语句,所以和if(b)没有区别,要表示判断是否相等,应该用"=="
                        System.out.println("a");
                else if (b)        //此时的b返回的是false
                        System.out.println("b");
                else if (!b)        //!b 返回的是true
                        System.out.println("c");
                else
                        System.out.println("d");
        }
}

作者: 巴银    时间: 2015-4-22 09:51
少了一个=号判断语句里面
作者: shw16888    时间: 2015-4-22 10:14
你的运算符错了是b==false
作者: an_lucas    时间: 2015-4-22 10:15
if(b=false)//这句有问题,b=dalse一个等号是赋值等,b==false两个等号是测试等(可以理解为判断等)
//你在if里写的是赋值等而不是判断等,所以b=false是不会返回boolean值的,只是将false赋给b.
作者: wwfangfang    时间: 2015-4-22 10:23
boolean b = false;

                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了
作者: Wilsoncyf    时间: 2015-4-22 11:07
if里面少写了个=号
作者: Sylvanas    时间: 2015-4-22 11:09
b=false是一个赋值,等于if(false)当然不会输出a
作者: cyr    时间: 2015-4-22 11:42
答案输出为"c"boolean类型赋值后是有返回值的,返回值就是赋的哪个值。结果你懂的。
作者: Cat    时间: 2015-4-22 12:02
我觉得问题就是=和==,前者赋值,后者比较
作者: 邓士林    时间: 2015-4-22 12:17
楼上解答很详细了,
作者: Autism    时间: 2015-4-23 21:49
谢谢各位大神的解释!




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