题目

读入年份和月份(1~12),输出该月有多少天。

思路

读年份与月份,月份非法直接报错。2 月天数由闰年判定;其余月用数组 {31,28,...} 或 switch 查表,闰年时 2 月为 29。

解题分析

大月 31、小月 30,2 月单独看闰年。闰年规则同第 2 题。月份非法应单独分支,不要访问越界数组。

完整程序

import java.io.*;

public class Main {
    public static void main(String[] args) {
        int year = 2024, month = 2;
        int days = 0;
        switch (month) {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break;
            case 4: case 6: case 9: case 11: days = 30; break;
            case 2: days = ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) ? 29 : 28; break;
            default: System.out.println("无效月份"); return;
        }
        System.out.println(days);
    }
}

运行示例

输出:

29

其它写法

下面每种写法都是完整程序,输入输出格式与正文一致,便于对照。

YearMonth.lengthOfMonth

程序:

import java.time.YearMonth;

public class Main {
    public static void main(String[] args) {
        int year = 2024, month = 2;
        if (month < 1 || month > 12) {
            System.out.println("无效月份");
            return;
        }
        System.out.println(YearMonth.of(year, month).lengthOfMonth());
    }
}

运行示例

输出:

29