黑马程序员技术交流社区

标题: 关于条件运算符的疑问 [打印本页]

作者: hughwang90    时间: 2014-3-23 11:16
标题: 关于条件运算符的疑问
本帖最后由 hughwang90 于 2014-3-23 23:46 编辑

看到一个很复杂的条件运算:

(quantity >50 ? discount3 : ( quantity > 20 ? discount2 : ( quantity > 10 ? discount 1 : 0.0 ) ) ) ) ;

看的眼睛都花了,请问如何分析?
作者: 周宇华    时间: 2014-3-23 11:42
看到一个很复杂的条件运算:

(quantity >50 ? discount3 : ( quantity > 20 ? discount2 : ( quantity > 10 ? discount 1 : 0.0 ) ) ) ) ;

看的眼睛都花了,请问如何分析?

先看最左边的条件运算符,并把( quantity > 20 ? discount2 : ( quantity > 10 ? discount 1 : 0.0 ) ) 用条件2代替,即:(quantity >50 ? discount3 : 条件2);这样就比较明显了,如果quantity >50,值就取discount3,否则值就取条件2;而条件2同理把( quantity > 10 ? discount 1 : 0.0 ) 替换条件3;即如果quantity > 20 ,值取discount2,否则值取条件3;最后条件3则是,如果quantity > 10,值取discount1,否则值取0.0;综上所述,语句意思如下:
如果quantity >50,值取discount3,如果quantity <= 50并且quantity > 20,值取discount2,如果quantity <= 20并且quantity > 10,值取discount1,否则值取0.0 。
作者: luoyilan222    时间: 2014-3-23 14:33
  说实话这一个我觉得你把他转换成if语句看起来就很容易咯,不知道下吧你是否感觉清晰咯                                      
               if(quantity >50){
                       return discount3;
               }else if(quantity > 20){
                       return discount2;
               }else if(quantity > 10){
                       return discount1;
               }else{
                       return 0.0;
               }
作者: 程浩    时间: 2014-3-23 22:17
(quantity >50 ? discount3 : ( quantity > 20 ? discount2 : ( quantity > 10 ? discount 1 : 0.0 ) ) ) ) ;
随便说个数就好分析咯:
quantity=49
1.49>50 不成立,选里面带括号的(quantity>20?....)
2.49>20 成立,选discount2
o了





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