【问题标题】:The program is showing a missing statement . Why is this error coming?程序显示缺少语句。为什么会出现这个错误?
【发布时间】:2020-08-08 21:01:33
【问题描述】:
 static String dayOfProgrammer(int year) {
        if(year==1918){
        String date= "26:08:"+year;
        return date;
        }
         if(year<1918|| year>1918){
            if(year%4==0){
                String date= "12:09:"+year;
                return date;
            }
            else{
                String date= "13:09:"+year;
                return date;
            }
        }

    }

Blockquote 该方法接受一个整数值“年份”,并且应该返回一个字符串值“日期”。但由于这个问题,当针对多个测试用例进行测试时,它会显示缺少 return 语句的运行时错误。

【问题讨论】:

    标签: java string methods


    【解决方案1】:

    编译器不能保证所有路径都返回一个值。将您的声明if(year&lt;1918|| year&gt;1918) 切换为else,所有路径都将返回:

    static String dayOfProgrammer(int year) {
        if(year==1918){
        String date= "26:08:"+year;
        return date;
        }
        else{
            if(year%4==0){
                String date= "12:09:"+year;
                return date;
            }
            else{
                String date= "13:09:"+year;
                return date;
            }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      @HaroldH 之前的回答是正确的,但我建议使用更简单的布局。

      static String dayOfProgrammer(int year) {
          if (year == 1918) {
              return "26:08:" + year;
          }
          else if (year%4 == 0) {
              return "12:09:" + year;
          }
          else {
              return "13:09:" + year;
          }
      }
      

      甚至(因为在'return'之后不需要'else')

      static String dayOfProgrammer(int year) {
          if (year == 1918) {
              return "26:08:" + year;
          }
          if (year%4 == 0) {
              return "12:09:" + year;
          }
          return "13:09:" + year;
      }
      

      这两个版本更简单的布局让控制流一目了然,你可以看到总是有一个返回执行。

      将“else if (...)”放置在不会导致进一步缩进的一行上,强调代码在备选方案之间做出一系列简单的选择。

      您实际上并不需要'else' - 如第二个示例所示。我认为这里的选择是一个品味问题。在这种情况下,我认为我更喜欢第一种,但没有硬性规定;重要的是结果代码的透明度。

      您会注意到我消除了“数据”变量;他们在这里没有真正的目的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-09
        • 2019-04-17
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多