java三目运算符

publicstaticintcompare(Datesa){returnyear>a.year?1:year<a.year?-1:month>a.month?1:mon... public static int compare(Dates a){
return year>a.year?1
:year<a.year?-1
:month>a.month?1
:month<a.month?-1
:day>a.day?1
:day<a.day?-1:0;
}请问这个三目运算符是怎么计算的啊
展开
 我来答
zhou2003737
2013-07-29 · TA获得超过1427个赞
知道小有建树答主
回答量:1082
采纳率:77%
帮助的人:463万
展开全部

看到复杂嵌套的三目运算不要慌,慢慢的一层层剖析你会发现其实也就那样。

根据三目定义 exp?st1:st2,exp的结果是个boolean类型的数据,如果是true则执行st1,如果为false则执行st2,所以 三目等价于if(exp){st1}else{st2},由此可见上述你给的可以更改成如下代码:

if(year>a.year){
                     return 1;
                 }else{
                     if(year<a.year){
                         return -1;
                     }else{
                         if(month>a.month){
                            return 1; 
                         }else{
                             if(month<a.month){
                                 return -1;
                             }else{
                                if(day>a.day){
                                    return 1;
                                } else{
                                    if(day<a.day){
                                        return -1;
                                    }else{
                                        return 0;
                                    }
                                }
                             }
                         }
                     }
                 }
更多追问追答
追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答
弱弱的问下,你从那看到或听到的应从右往左?
tytwddd
推荐于2017-09-26 · TA获得超过110个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:146万
展开全部
三目运算符a > b ? a : b运算规则是:如果?前面的等式为true,即a>b,则执行返回a,否则返回b;
先判断变量year是否大于对象a的year值,如果大于就返回1,小于就继续判断year是否小于对象a的year值,如果小于就返回-1;此后就是year==a.year的情况,依次判断月份和日
追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答
好像是从右到左,那你这样写还没if else效率高~~;其运算规则是从右到左,即先计算右则的表达式,也就是说你随便输出一个年月日,都要运行到最后一步,如果用if elseif else有可以第一步就判断出来了,还有就是你这么写逻辑不好理解,太复杂了!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月牙马马
2013-07-29 · TA获得超过189个赞
知道小有建树答主
回答量:428
采纳率:0%
帮助的人:189万
展开全部
这么狠的 三目 目测是 嵌套啊 谁写的 思路够强悍啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式