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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟盼盼 高级黑马   /  2013-3-5 23:19  /  2160 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在if语句中这样输入会报错?if(80<score<90)

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
if(80<score<90)这样输入少分号,他会自动匹配下一个分号,一般简单的一句语句是可以跟在后面if(80<score<90) int a=1;如果少了分号语句是不完整的。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
(80<score<90) 要分开表示的(80 < score && score < 90)
原来的是先比较score与80 然后就直接得到1或者0 再与90比较

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
应该写成if(score<90||score>80)
|| 是或的符号。
回复 使用道具 举报
应该写成if(score>80&&score>90),l逻辑表达式
回复 使用道具 举报
if(80<score<90)报错是因为,先判断80<score 为true或false,  然后再用结果比,假如结果是true,   true<90,比较类型是boolean和int,java不允许这样写,所以报错了;你可以写成if(score>80 && score>90)

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 朱传波 于 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)

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
80<score<90   这个条件不成立,80和score的比较结果是bool类型,其结果不能和90作比较了;可以这样写,80<score||score<90这样条件就成立了

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马