package com.iss.homework;
import java.io.*;
public class CheckDate {
public static void main(String[] args) throws Exception {
for (;;) {
int d1 = 0, m1 = 0, y1 = 0, leap1 = 0, d2 = 0, m2 = 0, y2 = 0, leap2 = 0,leap3 = 0;
int x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0;
System.out.println("输入第一个日期");
retry1: for (;;) {
System.out.print("哪一年?");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
System.out.println();
try {
y1 = Integer.parseInt(s);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的年份。");
continue retry1;
}
if (y1 < 0) {
System.out.println("输入为负数,请重新输入一个合法的年份。");
continue retry1;
} else {
if (y1 % 4 == 0) {
if (y1 % 100 != 0) {
leap1 = 1;
} else {
if (y1 % 400 == 0) {
leap1 = 1;
}
}
} else {
leap1 = 0;
}
break retry1;
}
}
retry2: for (;;) {
System.out.print("哪一月?");
InputStreamReader isr1 = new InputStreamReader(System.in);
BufferedReader br1 = new BufferedReader(isr1);
String s1 = br1.readLine();
System.out.println();
try {
m1 = Integer.parseInt(s1);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的月份。");
continue retry2;
}
if (m1 < 1 || m1 > 12) {
System.out.println("月份必须在1-12之间,请重新输入一个合法的月份。");
continue retry2;
} else {
break retry2;
}
}
retry3: for (;;) {
System.out.print("哪一天?");
InputStreamReader isr2 = new InputStreamReader(System.in);
BufferedReader br2 = new BufferedReader(isr2);
String s2 = br2.readLine();
System.out.println();
try {
d1 = Integer.parseInt(s2);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的日期。");
continue retry3;
}
if (m1 == 1 || m1 == 3 || m1 == 5 || m1 == 7 || m1 == 8
|| m1 == 10 || m1 == 12) {
if (d1 < 1 || d1 > 31) {
System.out.println("日期不能为0或超过31,请重新输入一个合法的日期。");
continue retry3;
}
} else {
if (m1 == 2) {
if (leap1 == 0) {
if (d1 < 1 || d1 > 28) {
System.out
.println("非闰年2月日期不能为0或超过28,请重新输入一个合法的日期。");
continue retry3;
}
} else {
if (d1 < 1 || d1 > 29) {
System.out
.println("闰年2月日期不能为0或超过29,请重新输入一个合法的日期。");
continue retry3;
}
}
} else {
if (d1 < 1 || d1 > 30) {
System.out.println("日期不能为0或超过30,请重新输入一个合法的日期。");
continue retry3;
}
}
}
break retry3;
}
System.out.println("第一个合法的日期输入成功!您输入的是:" + y1 + "年" + m1 + "月" + d1
+ "日");
System.out.println("请输入第二个日期:");
retry4: for (;;) {
System.out.print("哪一年?");
InputStreamReader isr3 = new InputStreamReader(System.in);
BufferedReader br3 = new BufferedReader(isr3);
String s3 = br3.readLine();
System.out.println();
try {
y2 = Integer.parseInt(s3);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的年份。");
continue retry4;
}
if (y2 < 0) {
System.out.println("输入为负数,请重新输入一个合法的年份。");
continue retry4;
} else {
if (y2 % 4 == 0) {
if (y2 % 100 != 0) {
leap2 = 1;
} else {
if (y2 % 400 == 0) {
leap2 = 1;
}
}
} else {
leap2 = 0;
}
break retry4;
}
}
retry5: for (;;) {
System.out.print("哪一月?");
InputStreamReader isr4 = new InputStreamReader(System.in);
BufferedReader br4 = new BufferedReader(isr4);
String s4 = br4.readLine();
System.out.println();
try {
m2 = Integer.parseInt(s4);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的月份。");
continue retry5;
}
if (m2 < 1 || m2 > 12) {
System.out.println("月份必须在1-12之间,请重新输入一个合法的月份。");
continue retry5;
} else {
break retry5;
}
}
retry6: for (;;) {
System.out.print("哪一天?");
InputStreamReader isr5 = new InputStreamReader(System.in);
BufferedReader br5 = new BufferedReader(isr5);
String s5 = br5.readLine();
System.out.println();
try {
d2 = Integer.parseInt(s5);
} catch (Exception e) {
System.out.println("输入为非整数,请重新输入一个合法的日期。");
continue retry6;
}
if (m2 == 1 || m2 == 3 || m2 == 5 || m2 == 7 || m2 == 8
|| m2 == 10 || m2 == 12) {
if (d2 < 1 || d2 > 31) {
System.out.println("日期不能为0或超过31,请重新输入一个合法的日期。");
continue retry6;
}
} else {
if (m2 == 2) {
if (leap2 == 0) {
if (d2 < 1 || d2 > 28) {
System.out
.println("非闰年2月日期不能为0或超过28,请重新输入一个合法的日期。");
continue retry6;
}
} else {
if (d2 < 1 || d2 > 29) {
System.out
.println("闰年2月日期不能为0或超过29,请重新输入一个合法的日期。");
continue retry6;
}
}
} else {
if (d2 < 1 || d2 > 30) {
System.out.println("日期不能为0或超过30,请重新输入一个合法的日期。");
continue retry6;
}
}
}
break retry6;
}
System.out.println("第二个合法的日期输入成功!您输入的是:" + y2 + "年" + m2 + "月" + d2
+ "日");
if (y1 == y2) {
if (m2 - m1 > 1) {
if (m1 == 1 || m1 == 3 || m1 == 5 || m1 == 7 || m1 == 8
|| m1 == 10 || m1 == 12) {
x1 = 31 - d1; // 大月
} else {
if (m1 == 2) {
if (leap1 == 1) {
x1 = 29 - d1; // 闰年且是2月
} else {
x1 = 28 - d1; // 非闰年2月
}
} else {
x1 = 30 - d1; // 小月
}
}
for (int i = m1 + 1; i < m2; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8
|| i == 10 || i == 12) {
x2 = 31 + x2; // 大月
} else {
if (i == 2) {
if (leap1 == 1) {
x2 = 29 + x2; // 闰年且是2月
} else {
x2 = 28 + x2; // 非闰年2月
}
} else {
x2 = 30 + x2; // 小月
}
}
}
x3 = x1 + x2 + d2;
} else {
if (m2 - m1 == 1) {
if (m1 == 1 || m1 == 3 || m1 == 5 || m1 == 7 || m1 == 8
|| m1 == 10 || m1 == 12) {
x1 = 31 - d1; // 大月
} else {
if (m1 == 2) {
if (leap1 == 1) {
x1 = 29 - d1; // 闰年且是2月
} else {
x1 = 28 - d1; // 非闰年2月
}
} else {
x1 = 30 - d1; // 小月
}
}
x3 = x1 + d2;
} else {
if (m1 == m2) {
x3 = d2 - d1;
} else {
if (m1 - m2 == 1) {
if (m2 == 1 || m2 == 3 || m2 == 5 || m2 == 7
|| m2 == 8 || m2 == 10 || m2 == 12) {
x1 = 31 - d2; // 大月
} else {
if (m2 == 2) {
if (leap2 == 1) {
x1 = 29 - d2; // 闰年且是2月
} else {
x1 = 28 - d2; // 非闰年2月
}
} else {
x1 = 30 - d2; // 小月
}
}
x3 = x1 + d1;
} else {
if (m1 - m2 > 1) {
if (m2 == 1 || m2 == 3 || m2 == 5
|| m2 == 7 || m2 == 8 || m2 == 10
|| m2 == 12) {
x1 = 31 - d2; // 大月
} else {
if (m2 == 2) {
if (leap2 == 1) {
x1 = 29 - d2; // 闰年且是2月
} else {
x1 = 28 - d2; // 非闰年2月
}
} else {