题目
读入年份和月份(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