判断闰年
闰年的判断条件是:能被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后条件限制),只需要把正则表达式中年份的判断的地方稍微改一下即可。