黑马程序员技术交流社区

标题: 求教一个简单的小问题 [打印本页]

作者: 垂天云    时间: 2013-8-27 10:57
标题: 求教一个简单的小问题
本帖最后由 垂天云 于 2013-8-27 11:49 编辑

毕老师的练习题:

第五题
boolean b = true;
if(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");

//b
if(b=false)
//c

我觉得是哪里写错了···谁那有正确的题目啊?

作者: 范龙波    时间: 2013-8-27 11:11
这段程序的打印结果为c
刚才就你说的这个问题做了下测试 :
得出以下结论:
判断条件条件如果写表达式,要看赋值类型 如果为boolean型 赋什么 值返回什么  , 如果引用类型编译不通过

作者: BCJ    时间: 2013-8-27 11:29
if语句 括号里不是放条件与表达式吗?
   
if(b=false)  ???
  
等号是双等吧
作者: code_geass    时间: 2013-8-27 11:38
if括号里的为值为真才运行下面的语句。也就是说 (b==xx) 这个整体为真就运行
作者: 张聪珉    时间: 2013-8-27 11:38
if语句是判断语句,后面跟的是结果是boolean,你的语句里是falsef赋值给了b,结果就是false,这样做没有意义,因为你赋值假了,f语句后面的内容怎么都执行不到,还有一种是if(b==false),这里是的结果是通过==号判断的结果再由if语句根据结果判断是否执行后面的语句,显然也为假,你的这个语句说白了,就是没有实际意义的语句。
作者: binghaiwang    时间: 2013-8-27 11:50
  1. boolean b = true;
  2.                 //下边这个写法就是有问题的,=号代表赋值运算,因此这里是不会返回真或假的,只是将b的值改变了
  3.                 if(b=false)  //如果写成if(b=false)有结果吗?如果有,结果是?
  4.                 System.out.println("a");
  5.                 else if(b)
  6.                 System.out.println("b");
  7.                 else if(!b)
  8.                 System.out.println("c");
  9.                 else
  10.                 System.out.println("d");
复制代码
没有写明题目的具体需求,不好判断是否代码有问题,我理解楼主可能是要得出b结果?
如果是,那么只要将=号变为==作为一个比较运算就可以了。

作者: 垂天云    时间: 2013-8-27 11:53
谢谢各位!明白了··
作者: 代文娟    时间: 2013-8-27 12:20
有结果呀,你那if里边应该写成“==”,刚开始b=true,当你判断时,
作者: 代文娟    时间: 2013-8-27 12:23
有结果呀,你那if里边应该写成“==”,刚开始b=true,当判断第一个if时,不满足条件,他就会运行else语句在判断if‘里是b为真,应该输出的是b




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