Java 程序正在显示缺少的语句。为什么会出现这种错误? 静态字符串dayOfProgrammer(整数年){ 如果(年份==1918){ 字符串日期=“26:08:”+年; 返回日期; } 如果(1918年){ 如果(第%4年==0){ 字符串日期=“12:09:”+年; 返回日期; } 否则{ 字符串日期=“13:09:”+年; 返回日期; } } }

Java 程序正在显示缺少的语句。为什么会出现这种错误? 静态字符串dayOfProgrammer(整数年){ 如果(年份==1918){ 字符串日期=“26:08:”+年; 返回日期; } 如果(1918年){ 如果(第%4年==0){ 字符串日期=“12:09:”+年; 返回日期; } 否则{ 字符串日期=“13:09:”+年; 返回日期; } } },java,string,methods,Java,String,Methods,Blockquote方法接受整数值“year”,并应返回字符串值“date”。但由于so问题,当针对多个测试用例进行测试时,它显示了缺少return语句的运行时错误 编译器不能保证所有路径都返回一个值。将语句if(year1918)切换为else,所有路径将返回: static String dayOfProgrammer(int year) { if(year==1918){ String date= "26:08:"+year;

Blockquote方法接受整数值“year”,并应返回字符串值“date”。但由于so问题,当针对多个测试用例进行测试时,它显示了缺少return语句的运行时错误


编译器不能保证所有路径都返回一个值。将语句
if(year1918)
切换为
else
,所有路径将返回:

 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;
            }
        }

    }

编译器不能保证所有路径都返回一个值。将语句
if(year1918)
切换为
else
,所有路径将返回:

 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;
            }
        }

    }

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

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;
        }
    }

}
甚至(因为“return”之后不需要“else”)

这两个版本的简单布局使控制流一目了然,并且您可以看到始终执行一个返回

将“elseif(…)”放在一行上不会导致进一步缩进,这强调了代码在备选方案之间进行简单的选择序列

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


你会注意到我消除了“数据”变量;它们在这里没有真正的用途。

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

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;
        }
    }

}
甚至(因为“return”之后不需要“else”)

这两个版本的简单布局使控制流一目了然,并且您可以看到始终执行一个返回

将“elseif(…)”放在一行上不会导致进一步缩进,这强调了代码在备选方案之间进行简单的选择序列

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

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