0

私はこのプログラムに1/1から12/31までの日付をそれぞれ個別の行で連続して読み取らせようとしています。これまでのところ、1/1から1/31までの印刷に成功しましたが、残りの月/日が含まれるようにループを続行する方法がわかりません。カレンダーを使用してこれを行う簡単な方法があることは知っていますが、そのルートは避けています。

public class LoopDate {

public static void main(String[] args) {

    int startingDayOfWeek = 2;

    boolean isLeapYear = false;

    int month = 1;
    int year = 2000;
    int numDays = 0;
    switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        numDays = 31;
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        numDays = 30;
        break;
    case 2:
        if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
            numDays = 29;
        else
            numDays = 28;
        break;
    default:
        System.out.println("Invalid month.");
        break;
    }
    int start = 1;

    do {
        System.out.println(month + "/" + start);
        start++;
    } while (start <= numDays);

}

}
4

2 に答える 2

0

switchステートメントを取得してループに入れる必要があります。または、ループから呼び出す別のメソッドに入れる方がよいでしょう。

于 2013-02-11T02:31:56.663 に答える
0

囲みループを追加します。

public class LoopDate {

public static void main(String[] args) {

    int startingDayOfWeek = 2;

    boolean isLeapYear = false;
    int year = 2000;
    int numDays = 0;
    for(int month = 1; month <= 12;month++){
        switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            numDays = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            numDays = 30;
            break;
        case 2:
            if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0))
                numDays = 29;
            else numDays = 28;
            break;
        default:
            System.out.println("Invalid month.");
            break;
        }
        for(int start=1;start<=numDays;start++) System.out.println(month + "/" + start);

    }
}
}
于 2013-02-11T02:32:40.887 に答える