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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李高翔 黑马帝   /  2011-11-19 20:31  /  4027 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class EXP
{
  public static void main(String args[])
  {
int c=38;
switch (c<10?1:c<25?2:c<35?3:4)
{
  case 1:
  System.out.println(" "+c+"℃ 有点冷,要多穿衣服。");
  case 2:
  System.out.println(" "+c+"℃ 正合适,出去玩吧。");
  case 3:
  System.out.println(" "+c+"℃ 有点热。");
  default:
  System.out.println(" "+c+"℃ 太热了!开空调。");
}
  }
}
c<10?1:c<25?2:c<35?3:4是从左边开始分析还是右边开始看?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 好问题。

查看全部评分

5 个回复

倒序浏览
徐杨 黑马帝 2011-11-19 20:42:39
沙发
本帖最后由 徐杨 于 2011-11-19 21:04 编辑

这个从左往右看啊
如果小于10  则执行1
如果大于10  则执行后面的语句c<25?2:c<35?3:4
如果小于25 则执行2
如果大于25 则执行后面的语句c<35?3:4
如果小于35 则执行3
如果大于35 则执行4
三元运算符表达式看懂了 这个就很好办  

三元运算符  A>B? C:D
A>B成立 则执行C
不成立则执行D
一般用于减少代码行数用的,提高效率

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
对于你的情况,就是一个表达式,这个值只能是1 2 3 4之间的任何一个int值
switch (c<10?1:c<25?2:c<35?3:4)
你整个表达式的计算结果是int类型,即就是1 2 3 4
对于你的c= 38
c< 10? 1: (c<25?2:c<35?3:4) 因为c<10为假,所以需要后面继续判断
c<25?2:c<35?3:4因为c<10为假,所以需要后面继续判断
c<35? 3: 4因为c<35为假,所以整个式子结果为c< 10? 1: (c<25?2:c<35?3:4)  =4

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
对于你的情况,就是一个表达式,这个值只能是1 2 3 4之间的任何一个int值
switch (c<10?1:c<25?2:c<35?3:4)
你整个表达式的计算结果是int类型,即就是1 2 3 4
对于你的c= 38
c< 10? 1: (c<25?2:c<35?3:4) 因为c<10为假,所以需要后面继续判断
c<25?2:c<35?3:4因为c<10为假,所以需要后面继续判断
c<35? 3: 4因为c<35为假,所以整个式子结果为c< 10? 1: (c<25?2:c<35?3:4)  =4

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
先不说这代码是怎么执行的,不过一般的java程序员是不会这么写代码的,这样会降低代码的阅读性,很容易产生歧义的,所以最好是分开写。
回复 使用道具 举报
从右往左看。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马