0

编写一个名为 season 的方法,它接受两个整数作为参数,表示月份和日期,并返回一个字符串,指示该月份和日期的季节。假设月份指定为 1 到 12 之间的整数(1 表示一月,2 表示二月,依此类推),并且月份中的日期是 1 到 31 之间的数字。

如果日期介于 12/16 和 3/15 之间,则应返回“Winter”。如果日期介于 3/16 和 6/15 之间,则应返回“Spring”。如果日期介于 6/16 和 9/15 之间,则应返回“Summer”。如果日期介于 9/16 和 12/15 之间,则应返回“Fall”。

这是我的代码

public static String season (int month, int day){
if (month>9 && month<12){
    if (month==9 && day>=16 || month==12 && day<=15){
        return "Fall";
    }
}else if (month>6 && month<9){
    if (month==6 && day>=16 || month==9 && day<=15){
        return "Summer";
    }
}else if(month>3 && month<6){
    if (month==3 && day>=16 || month==6 && day<=15){
        return "Sprint";
    }
}else {
    return "Winter";
}
}

这是 第 17 行错误 您的方法必须返回一个值。如果您的方法有多个执行路径(例如 if/else 语句),则每个路径都必须包含一个 return 语句。还要注意以“else if”结尾的嵌套 if/else 语句。缺少返回语句 } ^ 1 错误 21 警告

4

9 回答 9

2

你的内部 if 案例没有 else 并且内部 if 永远不会匹配。例如,01.Sep 会发生什么?在这种情况下,您的函数不会返回任何内容。

于 2013-10-22T06:23:26.757 回答
1

您必须在所有执行路径中返回一个值或抛出异常。

public static String season(int month, int day)
{
    if (month > 9 && month < 12)
    {
        if (month == 9 && day >= 16 || month == 12 && day <= 15)
        {
            return "Fall";
        }
    }
    else if (month > 6 && month < 9)
    {
        if (month == 6 && day >= 16 || month == 9 && day <= 15)
        {
            return "Summer";
        }
    }
    else if (month > 3 && month < 6)
    {
        if (month == 3 && day >= 16 || month == 6 && day <= 15)
        {
            return "Sprint";
        }
    }
    else
    {
        return "Winter";
    }

    throw new InvalidParameterException("no matching season found");
}
于 2013-10-22T06:40:53.787 回答
1

您需要在每种情况下都返回一个值。所以只需在方法的末尾添加一个返回值。根据您的代码,如果月份为 9,日期为 15,则将无法返回结果。

public static String season (int month, int day){
if (month>9 && month<12){
    if (month==9 && day>=16 || month==12 && day<=15){
        return "Fall";
    }
}else if (month>6 && month<9){
    if (month==6 && day>=16 || month==9 && day<=15){
        return "Summer";
    }
}else if(month>3 && month<6){
    if (month==3 && day>=16 || month==6 && day<=15){
        return "Sprint";
    }
}else {
    return "Winter";
}

return "";
}
于 2013-10-22T06:20:02.443 回答
1
public static String season(int month, int day){

        if (month==9 && day>=16 || month==12 && day<=15||month==10||month==11){
            return "Fall";
        }   else if (month==6 && day>=16 || month==9 && day<=15||month==7||month==8){
            return "Summer";
        } else    if (month==3 && day>=16 || month==6 && day<=15||month==4||month==5){
            return "Spring";
        } else {
        return "Winter";
    }
}
于 2015-02-10T21:59:14.827 回答
0

尝试这样编程:

if (before march 16 || after dec 15) return "Winter";
if (before june 16)  return "Spring";   // since we're not before march 16!!
...

对于每个 if 语句,您可以消除 1 个案例,并且不要多次检查条件。

于 2013-10-22T07:17:09.017 回答
0

尝试添加return ""之前和你的功能。因此,如果您的函数season返回空字符串,则意味着您有错误的参数或其他错误。

于 2013-10-22T06:22:32.193 回答
0

初始化一个字符串变量。根据 if 条件,将值分配给此字符串变量。在函数末尾返回此字符串变量。

于 2013-10-22T06:26:21.900 回答
0

做这个:

if (month==9 && day>=16 || month>9 && month<12 || month==12 && day<=15) {
    return "Fall";
}
else if (month==6 && day>=16 || month>6 && month<9 || month==9 && day<=15) {
    return "Summer";
}
else if (month==3 && day>=16 || month>3 && month<6 || month==6 && day<=15) {
    return "Sprint";
}
else {
    return "Winter";
}
于 2015-07-10T16:03:33.333 回答
-1

请尝试以下代码

    public static String season(int month, int day) {
if (month > 9 && month < 12) {
    if (month == 9 && day >= 16 || month == 12 && day <= 15 || !(month == 9 || month == 12)) {
        return "Fall";
    }
} else if (month > 6 && month < 9) {
    if (month == 6 && day >= 16 || month == 9 && day <= 15 || !(month == 6 || month == 9)) {
        return "Summer";
    }
} else if (month > 3 && month < 6) {
    if (month == 3 && day >= 16 || month == 6 && day <= 15 || !(month == 3 || month == 6)) {
        return "Sprint";
    }
} else {
    return "Winter";
}



 }
于 2013-10-22T06:28:49.287 回答