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

来源:4-3 Java条件语句之多重 if

冰火犀牛

2016-09-09 08:55

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

写回答 关注

6回答

  • 明轩2015
    2016-09-09 09:35:34
    已采纳

    就看的懂第一条。

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


    冰火犀牛

    非常感谢!

    2016-09-13 14:07:00

    共 1 条回复 >

  • 慕粉0366153
    2016-09-09 10:25:20

    帮你运行了一下,如图http://img.mukewang.com/57d21c9b0001c14709160545.jpg

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

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

    冰火犀牛

    谢谢谢谢!

    2016-09-13 15:03:09

    共 1 条回复 >

  • 慕粉3959599
    2016-09-09 09:58:55

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

    冰火犀牛

    哈哈的确是欸~

    2016-09-13 14:08:16

    共 1 条回复 >

  • qq_恩熙_0
    2016-09-09 09:53:58

    没有什么错误

  • 喵喵小喵
    2016-09-09 09:46:33

    第二句有代码冗余。

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

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

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

  • 慕粉3959599
    2016-09-09 09:46:15

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

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165172 学习 · 17581 问题

查看课程

相似问题