黑马程序员技术交流社区

标题: if语句 [打印本页]

作者: 翟盼盼    时间: 2013-3-5 23:19
标题: if语句
为什么在if语句中这样输入会报错?if(80<score<90)
作者: 黑马-杨鹏立    时间: 2013-3-5 23:22
if(80<score<90)这样输入少分号,他会自动匹配下一个分号,一般简单的一句语句是可以跟在后面if(80<score<90) int a=1;如果少了分号语句是不完整的。
作者: 郝滨    时间: 2013-3-5 23:26
(80<score<90) 要分开表示的(80 < score && score < 90)
原来的是先比较score与80 然后就直接得到1或者0 再与90比较
作者: HM王琦    时间: 2013-3-5 23:27
应该写成if(score<90||score>80)
|| 是或的符号。
作者: luxun1912    时间: 2013-3-5 23:29
应该写成if(score>80&&score>90),l逻辑表达式
作者: 张卫刚    时间: 2013-3-6 00:54
if(80<score<90)报错是因为,先判断80<score 为true或false,  然后再用结果比,假如结果是true,   true<90,比较类型是boolean和int,java不允许这样写,所以报错了;你可以写成if(score>80 && score>90)
作者: 朱传波    时间: 2013-3-6 09:43
本帖最后由 朱传波 于 2013-3-6 09:45 编辑

作为if语句,后面括号里得出的必须是bool值,即 true 或者 false
如果你写成if(80<score<90)
计算机中不能一次性的进行比较
我们知道,两个<号的优先级是相同的,
于是,计算机便会按照从左向右的顺序进行比较
于是步骤如下:
if(80<score<90)---->   if(true"或者false“<90)

但是这个时候,bool类型的值是无法与int类型的值进行比较的,便出现了报错

---->  if(括号中出现错误)

所以,如果想达这种效果的话,必须把括号中的内容拆开
写成
if(80<score&&score<90)
作者: 李贤贤    时间: 2013-3-6 11:46
80<score<90   这个条件不成立,80和score的比较结果是bool类型,其结果不能和90作比较了;可以这样写,80<score||score<90这样条件就成立了




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