验证1980后的出生日期 格式要求yyyy/MM/dd(细化闰年与非闰年)

判断闰年

闰年的判断条件是:能被4整除同时不能被100整除,或者能被400整除。

源码

public class Work2 {
    public static void main(String[] args) {
        //String str = "2008/02/19";
        System.out.println("请输入出生日期(格式按题目要求)");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String[] n=str.split("/");
        int[] m=new int[n.length];
        String regex = "(19[8-9][0-9]|[2-9]\\d{3})/(01|0[3-9]|1[0-2])/(0[1-9]|[1-2][0-9]|3[0-1])";//非闰年
        String regex1 = "(19[8-9][0-9]|[2-9]\\\\d{3})/(0[2])/([0-1][1-9]|2[0-8])";//非闰年2月
        String regex3 = "(19[8-9][0-9]|[2-9]\\d{3})/(0[2])/(0[1-9]|[1-2][0-9])";//闰年2月
        for (int i = 0; i < n.length; i++) {
            m[i]= Integer.parseInt(n[i]);
        }
        if (m[0]%4==0 && m[0]%100>0 || m[0]%400==0) {//m[0]取年份判断闰年
            if (m[1] == 02) {//m[1]取月份判断是否是2月
                System.out.println("闰年2月");
                System.out.println(str.matches(regex3));
            }
            else {
                System.out.println("闰年");
                System.out.println(str.matches(regex));
            }
        }else {//非闰年
            if (m[1] == 02) {
                System.out.println("非闰年2月");
                System.out.println(str.matches(regex1));
            }
            else {
                System.out.println("非闰年");
                System.out.println(str.matches(regex));
            }
        }
    }
}

测试结果
在这里插入图片描述

解释

//键盘输入一组数据
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
//用split把数据进行切割,年月日分开存入数组
 String[] n=str.split("/");
//定义一个int型数组准备接收数据,长度要和发出数据的数组长度一样
 int[] m=new int[n.length];
//做一个循环,把String型数组内容存入到int型数组,要用Integer.parseInt()来转换类型
for (int i = 0; i < n.length; i++) {
            m[i]= Integer.parseInt(n[i]);
        }

  剩下的就是正则表达式的定义和是否是闰年的判断,在这要把闰年和非闰年的2月分开重新的定义一个规则,方便if判断的时候做比较。要是想要判断其他年份(不受1980后条件限制),只需要把正则表达式中年份的判断的地方稍微改一下即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值