0

月と日を表す 2 つの整数をパラメーターとして取り、その月と日の季節を示す文字列を返す、season という名前のメソッドを作成します。月は 1 ~ 12 の整数 (1 月は 1、2 月は 2 など) として指定され、月の日は 1 ~ 31 の数値であるとします。

日付が 12/16 から 3/15 の間にある場合は、「冬」を返す必要があります。日付が 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 ステートメントにも注意してください。return ステートメントがありません } ^ 1 エラー 21 警告

4

9 に答える 9

2

あなたの内側のケースには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

あらゆる状況で値を返す必要があるため、メソッドの最後に return を追加するだけです。コードに基づいて、月が 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

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 に答える