判断日期经常合法出现在IO场景下,下面将使用简练的思路和代码呈现给大伙!

实现思路:

1、声明并初始化一个整型数组,表示各个月中最大的天数,数组长度刚好为12(注意:该数组在平年条件下使用)

2、定义一个方法,判断用户输入的月份是否在[1,12]区间,然后再判断年份是平年还是闰年,最后根据年份的类型去判断天数是否正确(利用数组去判断)

这里大家可能有些疑问?

Q1 : 为什么使用数组代表最大天数?

A1:因为各个月的天数规律并不像月份那样明显(月份是递增序列),而利用数组表示天数可以达到一个以空间换时间的目的,减少的if else的分支代码。

完整代码如下:

import java.util.Scanner;

public class CheckDate{
    //各个月中最大天数
    private static int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println(judge(sc.nextInt(),sc.nextInt(),sc.nextInt()));
    }

    //判断日期合法性
    public static boolean judge(int year, int month, int day){
        //首先判断月份是否合法
        if (month >= 1 && month <= 12){
            //判断是否为闰年
            if ((year % 100 == 0 && year % 400 == 0) || year % 4 == 0){
                //判断当前月份是否为2月,因为闰年的2月份为29天
                if (month == 2 && day <= 29) return true;
                else {
                    if (day <= days[month-1]) return true;
                }
            }else {
                if (day <= days[month-1]) return true;
            }
        }
        return false;
    }
}

运行效果:2021为平年,2月只有28天,所以返回false

java校验日期格式 java校验日期是否合法_System

如果该篇文章对您有帮助,可以点个💖加收藏,同行作伴,一路逐梦~