黑马程序员技术交流社区

标题: 新人求助! [打印本页]

作者: xiaofeng    时间: 2014-2-24 20:26
标题: 新人求助!
关于if语句,验证输出结果是c,if后面不是跟条件表达式么?还能赋值?
  1. class Demo01 {
  2.         public static void main(String[] args) {
  3.                 boolean b=true;
  4.                 if(b=false){//这里是把false赋值给b 了?
  5.                 System.out.println("a");
  6.                 }else if(b){
  7.                 System.out.println(b);       
  8.                 }else if(!b){
  9.                 System.out.println("c");
  10.                 }else
  11.                 System.out.println("d");
  12.         }
  13. }
复制代码



作者: 张稳    时间: 2014-2-24 20:46
可以写,输出的结果是c,这种题估计要检查细心程度什么的,实际编程感觉没有什么意义
作者: 灰太狼爱平底锅1    时间: 2014-2-24 20:51
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句了,那语句就出现逻辑错误了,如if(a=1)表达式a=1一直为真,因此无需判断。
作者: xiaofeng    时间: 2014-2-24 21:08
灰太狼爱平底锅1 发表于 2014-2-24 20:51
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句 ...

是判断b不等于false之后再赋值给b是吧?
作者: xiaofeng    时间: 2014-2-24 21:10
灰太狼爱平底锅1 发表于 2014-2-24 20:51
if(b=false)    // 把false赋值给b , 因为 if(false)为假,则执行下面语句,将判断表达式写成成赋值语句 ...

还是直接false赋值给b 之后条件判断为false然后执行下面的语句?
作者: 我叫MT    时间: 2014-2-25 00:17
if里边写的只是个条件,并非真正意义的吧b改为了false,条件现在为false,而真正的b是true,同样第6行也是条件为false,而真正作判断的b是true,结果自然是C
作者: 丁香花    时间: 2014-2-25 09:42
楼主你的问题在于 if(b=false)你把判断语句用错了,布朗型数据本身就是判断语句,里面符号因改写成 if(b==false)
否则就是一个赋值运算了。
作者: yekong262    时间: 2014-2-25 16:53
if后面接条件表达式 这个条件表达式的结果为 ture 或者 false  你这里直接把结果写上去了,,  不过一般都不这样写、、、比较没意义。。
  1. class Demo01 {
  2.         public static void main(String[] args) {
  3.                 boolean b=true;
  4.                 if(b=false){//这里是把false赋值给b 了?  这里是把false赋值给b了。 if(b=false)语句代表的就是
  5.                 System.out.println("a");      //false不满足这个if语句。
  6.                 }else if(b){
  7.                 System.out.println(b);        
  8.                 }else if(!b)//  !b代表的结果为真  满足条件 执行这句、
  9.                 {
  10.                 System.out.println("c");
  11.                 }else
  12.                 System.out.println("d");
  13.         }
  14. }
复制代码

作者: 严旭晟    时间: 2014-2-26 08:23
关于if语句,验证输出结果是c,if后面不是跟条件表达式么?还能赋值?

楼主是想问,if(boolean表达式)表达式的类型?
其中,括号内为boolean表达式,即表达式的结果必为boolean类型
b=false赋值表达式,因为b本身是boolean类型,且赋值后为boolean
如果存在这样,int b = 0; if(b =1) 此时虽然也是赋值表达式,但是b为整型,不符合if的要求,会出现:
不兼容的类型
找到:int
需要:boolean

注意,这是与C语言的区别(标准C语言中并没有关于bool的定义,可以借助int型表示)。
综上,不是所有的赋值表达式都能作为if的表达式!
总之,if(表达式必须有boolean类型的结果),并且只要有boolean类型的返回结果即可。例如,返回值类型为boolean的函数调用:if(func())






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