java语言实现的日历查询小程序,有输入容错机制,支持万年历。
package hust.hg.test;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestCalender {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
while (true) {
int year = 0, month = 0;
while (true) {
System.out.print("->请输入年份:");
try {
year = in.nextInt();
if (year < 1900) {
System.out.println("请输入正确的年份格式(>1900,且为整数)!");
continue;
}
break;
} catch (InputMismatchException e) {
System.out.println("请输入正确的年份格式(>1900,且为整数)!");
in = new Scanner(System.in);
continue;
} catch (Exception e) {
e.printStackTrace();
}
}
while (true) {
System.out.print("->请输入月份:");
try {
month = in.nextInt();
if (month > 12 || month <= 0) {
System.out.println("请输入正确的月份格式(1到12之间,且为整数)!");
continue;
}
break;
} catch (InputMismatchException e) {
System.out.println("请输入正确的月份格式(1到12之间,且为整数)!");
in = new Scanner(System.in);
continue;
} catch (Exception e) {
e.printStackTrace();
}
}
int sum = 0;
for (int i = 1900; i < year; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
sum += 366;
else
sum += 365;
}
for (int i = 1; i < month; i++) {
if (i == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
sum += 29;
} else {
sum += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
sum += 30;
} else {
sum += 31;
}
}
int days = 0;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
days = 29;
else
days = 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}
sum += 1;
int weekday = sum % 7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < weekday; i++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
if (sum % 7 == 6) {
System.out.print(i + "\n");
} else {
System.out.print(i + "\t");
}
sum++;
}
System.out.println();
System.out.println("输入任意字符继续查询&输入N退出");
String choice = in.next();
if (choice.equalsIgnoreCase("N")) {
in.close();
break;
}
}
System.out.println("你已经成功退出!");
}
}