为了账号安全,请及时绑定邮箱和手机立即绑定

可以运行出结果,但有什么问题吗?

System.out.println(age>=60?"old":age>30?"中年":age>=18?"青年":"童年"); 这样也可以出结果,有什么逻辑错误吧?对比 System.out.println(age >= 60 ? "老年" : age >= 40 && age < 60 ? "中年" : 18<= age || age<40 ? "少年" : "童年");

正在回答

6 回答

就看的懂第一条。

感觉第一条代码要比第二条代码好很多,逻辑错误好像没有


0 回复 有任何疑惑可以回复我~
#1

冰火犀牛 提问者

非常感谢!
2016-09-13 回复 有任何疑惑可以回复我~

帮你运行了一下,如图http://img1.sycdn.imooc.com//57d21c9b0001c14709160545.jpg

有这几个小问题,蓝条的地方,判断有问题,应该是18>=age || age<40 ,改了之后,两个代码完全没什么区别,执行结果都一样

其次,第二个代码,执行的顺序有问题,比如,age是17的时候,它先判断age是不是>=60,如果大于,则是老年,如果不大于,则执行接下来的 判断,age>=40 && age <60?   这里的age< 60,已结重复了,因为执行这条代码的前提就是age<60,所以可以不要写,代码中能省则省,降低代码的重复性很重要,希望能解决你的问题,望采纳

1 回复 有任何疑惑可以回复我~
#1

冰火犀牛 提问者

谢谢谢谢!
2016-09-13 回复 有任何疑惑可以回复我~

第二条条件有点多余,且18<=age||age<40,结果会显示17也是少年,人生会没有童年了。

0 回复 有任何疑惑可以回复我~
#1

冰火犀牛 提问者

哈哈的确是欸~
2016-09-13 回复 有任何疑惑可以回复我~

没有什么错误

0 回复 有任何疑惑可以回复我~

第二句有代码冗余。

1:age >= 60 ? "老年" : age >= 40 && age < 60 ? 首先第一个条件是age是否大于60,是的话“老年”,不是的话再判断age是否大于等于40且小于60。前面已经判断过不是大于等于60了,那肯定是小于60,就不用再判断了。

2:同理已经判断过age不大于等于40,就不用再判断了。

3:&&shi 并且,||是或者.

1 回复 有任何疑惑可以回复我~

好像没有逻辑错误,就是可读性不高

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

可以运行出结果,但有什么问题吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信