A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 郑文博 中级黑马   /  2012-6-26 22:05  /  1981 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑文博 于 2012-6-26 22:39 编辑
  1. /*
  2.         if-switch语句练习
  3. */
  4. class DemoTest
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 boolean b = true;

  9.                         if(b=false)  //如果写成if(b=false)有结果吗?如果有,结果是?
  10.                                 System.out.println("a");
  11.                         else if(b)
  12.                                 System.out.println("b");
  13.                         else if(!b)
  14.                                 System.out.println("c");
  15.                         else
  16.                                 System.out.println("d");
  17.         }
  18. }
复制代码
这个程序输出结果为什么是c呢?搞不懂了,还有个问题如何修改第10行的条件语句,输出结果才会b呢?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
本帖最后由 韦念欣 于 2012-6-26 22:15 编辑

楼主,你的比较运算符写错了,=号是赋值运算符,==号才是比较运算符,写代码的时候要小心哦!
如果写成if (b = false),那么执行这条语句后,b就真的变成false了。
  1. /*
  2. if-switch语句练习
  3. */
  4. class DemoTest
  5. {
  6.             public static void main(String[] args)
  7.            {
  8.                 boolean b = true;

  9.                 if (b == false)               //把=号改成==号,程序就正确了
  10.                       System.out.println("a");
  11.                 else if (b)
  12.                       System.out.println("b");
  13.                 else if (!b)
  14.                       System.out.println("c");
  15.                 else
  16.                        System.out.println("d");
  17.           }
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
韦念欣 发表于 2012-6-26 22:12
楼主,你的比较运算符写错了,=号是赋值运算符,==号才是比较运算符,写代码的时候要小心哦!
如果写成if ( ...

那写成了=后为什么输出的是c呢?
回复 使用道具 举报
郑文博 发表于 2012-6-26 22:24
那写成了=后为什么输出的是c呢?


他不是说了吗 首先你给 b 赋值了 flase 为假了 读到第一个else if(b)的时候 不成立
到else if(!b)成立 所以 就输出C了
回复 使用道具 举报
郑文博 发表于 2012-6-26 22:24
那写成了=后为什么输出的是c呢?

我回答的第2行已经写有,如果写成=,那么b就会赋值为false,if (b = false)的结果是false,程序就会往下判断接下来的else if语句,if (b),计算结果是false,不成立,继续下一个else if ,if (!b) 结果是true,条件成立,所以执行输出c的语句,屏幕上就显出是c了。
回复 使用道具 举报
韦念欣 发表于 2012-6-26 22:56
我回答的第2行已经写有,如果写成=,那么b就会赋值为false,if (b = false)的结果是false,程序就会往下 ...

这个if(b=false)  不是应该先打印a 嘛?    进了if 了  怎么不执行这里面的打印a 的代码
回复 使用道具 举报
sunhaodi 发表于 2012-6-27 01:28
这个if(b=false)  不是应该先打印a 嘛?    进了if 了  怎么不执行这里面的打印a 的代码
...

它只是进括号,没进函数体内啊!b=false 这个语句有返回么?没有,if()里面的东西为空,默认为false,不执行!
回复 使用道具 举报
孙飞 中级黑马 2012-6-27 06:35:38
8#
你定义了b的类型是布尔的,所以只有真或者假,if又是判断语句,对于只有真假的布尔类型判断肯定是只有为真时才执行输出语句了
回复 使用道具 举报
黄奕豪 发表于 2012-6-27 01:42
它只是进括号,没进函数体内啊!b=false 这个语句有返回么?没有,if()里面的东西为空,默认为false, ...

明白了。:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马