打印日历
计算出1900年1月1日至当前日期之间总共间隔多少天,将其除以7取余数,该结果即为当月1号是星期几。提示:1900年1月1日星期一
import java.util.Scanner;
public class TestShowCalendar {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入年、月
System.out.println("输入年份:");
int year = scanner.nextInt();
System.out.println("输入月份:");
int month = scanner.nextInt();
// 判断平闰年
int flag;// flag==1是闰年,flag==0是平年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
flag = 1;
else
flag = 0;
// 计算天数
int days = days_count(year, month, flag);// 记录所输入日期距1990年1月1日总共有多少天
// 计算该月1日星期几
int one_week = days % 7;
// 开始排版
System.out.println("**************************************************");
System.out.println("\t\t" + month + "月");
System.out.println("**************************************************");
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < one_week; i++) {
System.out.print("\t");
}
int month_days;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
month_days = 31;
break;
case 2:
month_days = 28 + flag;
break;
default:
month_days = 30;
}
for (int i = 1; i < month_days + 1; i++) {
System.out.print(i + "\t");
if ((one_week + i) % 7 == 0)
System.out.println();
}
}
// 计算天数的方法
public static int days_count(int year, int month, int flag) {
int days;
int year_add = (year - 1900);
if (year_add < 0)
year_add = -year_add;
days = year_add * 365 + (year_add - 1) / 4;// 计算了所输入年份1月1日距1990年1月1日是第几天
switch (month - 1) {
case 11:
days += 30;
case 10:
days += 31;
case 9:
days += 30;
case 8:
days += 31;
case 7:
days += 31;
case 6:
days += 30;
case 5:
days += 31;
case 4:
days += 30;
case 3:
days += 31;
case 2:
days += 28 + flag;
case 1:
days += 31;
case 0:
days += 1;
break;
default:
System.out.println("请输入正确的月份!");
break;
}
return days;
}
}
输出示例:
不过很遗憾这段代码只能准确打印出1900年1日以后的日历,等我找到更好的方法再进行更换。