题目
日期结构体:判断是否合法日期
思路
读 y,m,d,校验月日范围,2 月用闰年天数;daysInMonth(y,m) 辅助函数返回该月最大日。
解题分析
月份 1~12,日期不超过当月天数,2 月看闰年。不要用固定 2 月 28 判所有年份。
完整程序
import java.io.*;
public class Main {
public static void main(String[] args) {
int y = 2024, m = 2, d = 29;
int[] dd = {0,31,28,31,30,31,30,31,31,30,31,30,31};
boolean leap = (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0);
int dim = (m == 2 && leap) ? 29 : dd[m];
System.out.println(m >= 1 && m <= 12 && d >= 1 && d <= dim ? "yes" : "no");
}
}
运行示例
输出:
yes