黑马程序员技术交流社区

标题: switch (c<10?1:c<25?2:c<35?3:4)该句怎么看 [打印本页]

作者: 李高翔    时间: 2011-11-19 20:31
标题: switch (c<10?1:c<25?2:c<35?3:4)该句怎么看
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是从左边开始分析还是右边开始看?
作者: 徐杨    时间: 2011-11-19 20:42
本帖最后由 徐杨 于 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
一般用于减少代码行数用的,提高效率
作者: moonlight    时间: 2011-11-19 20:48
对于你的情况,就是一个表达式,这个值只能是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
作者: moonlight    时间: 2011-11-19 20:50
对于你的情况,就是一个表达式,这个值只能是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
作者: 张冬冬    时间: 2011-11-19 22:32
先不说这代码是怎么执行的,不过一般的java程序员是不会这么写代码的,这样会降低代码的阅读性,很容易产生歧义的,所以最好是分开写。
作者: 804404980    时间: 2011-11-20 00:25
从右往左看。




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