System.out.println(age>=60?"old":age>30?"中年":age>=18?"青年":"童年"); 这样也可以出结果,有什么逻辑错误吧?对比 System.out.println(age >= 60 ? "老年" : age >= 40 && age < 60 ? "中年" : 18<= age || age<40 ? "少年" : "童年");
就看的懂第一条。
感觉第一条代码要比第二条代码好很多,逻辑错误好像没有
帮你运行了一下,如图
有这几个小问题,蓝条的地方,判断有问题,应该是18>=age || age<40 ,改了之后,两个代码完全没什么区别,执行结果都一样
其次,第二个代码,执行的顺序有问题,比如,age是17的时候,它先判断age是不是>=60,如果大于,则是老年,如果不大于,则执行接下来的 判断,age>=40 && age <60? 这里的age< 60,已结重复了,因为执行这条代码的前提就是age<60,所以可以不要写,代码中能省则省,降低代码的重复性很重要,希望能解决你的问题,望采纳
第二条条件有点多余,且18<=age||age<40,结果会显示17也是少年,人生会没有童年了。
没有什么错误
第二句有代码冗余。
1:age >= 60 ? "老年" : age >= 40 && age < 60 ? 首先第一个条件是age是否大于60,是的话“老年”,不是的话再判断age是否大于等于40且小于60。前面已经判断过不是大于等于60了,那肯定是小于60,就不用再判断了。
2:同理已经判断过age不大于等于40,就不用再判断了。
3:&&shi 并且,||是或者.
好像没有逻辑错误,就是可读性不高