
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;
}请问这个三目运算符是怎么计算的啊 展开
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;
}请问这个三目运算符是怎么计算的啊 展开
展开全部
看到复杂嵌套的三目运算不要慌,慢慢的一层层剖析你会发现其实也就那样。
根据三目定义 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;
}
}
}
}
}
}
更多追问追答
追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答
弱弱的问下,你从那看到或听到的应从右往左?
展开全部
三目运算符a > b ? a : b运算规则是:如果?前面的等式为true,即a>b,则执行返回a,否则返回b;
先判断变量year是否大于对象a的year值,如果大于就返回1,小于就继续判断year是否小于对象a的year值,如果小于就返回-1;此后就是year==a.year的情况,依次判断月份和日
先判断变量year是否大于对象a的year值,如果大于就返回1,小于就继续判断year是否小于对象a的year值,如果小于就返回-1;此后就是year==a.year的情况,依次判断月份和日
追问
三目运算顺序不是应该从右往左吗,你这从左往右了吧?
追答
好像是从右到左,那你这样写还没if else效率高~~;其运算规则是从右到左,即先计算右则的表达式,也就是说你随便输出一个年月日,都要运行到最后一步,如果用if elseif else有可以第一步就判断出来了,还有就是你这么写逻辑不好理解,太复杂了!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么狠的 三目 目测是 嵌套啊 谁写的 思路够强悍啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询