输入年份和其对应的月分,就可以打印出该月分相应日历
import java.util.Scanner;
public class 日历 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请选择年份:");
int year = input.nextInt();
System.out.print("请选择月份:");
int month = input.nextInt();
int NumDay = 0;//1900年到今年前一年的天数
for (int i = 1900; i < year ; i++) {
if(i%4==0 && i%100!=0 || i%400==0){//闰年判断
NumDay +=366;
}else {
NumDay +=365;
}
}
// 判断今年是否为润年
//如果是闰年
//计算输入月距离输入年的1月1日的总天数
for (int i = 1; i < month; i++) {
int day=0;
switch (i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;
break;
case 4:
case 6:
case 9:
case 11:
day=30;
break;
case 2:
if (year%4==0 && year%100!=0 || year%400==0){
day=29;
}else {
day=28;
}
}
NumDay = NumDay + day;//统计总天数(含月)
}
int week = NumDay %7 + 1;//根据总天数来判断当前年第一天是星期几
//获得输入月的第一天是星期几
int monthdays = 0;
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthdays=31;
break;
case 4:
case 6:
case 9:
case 11:
monthdays=30;
break;
case 2:
if (year%4==0 && year%100!=0 || year%400==0){
monthdays=29;
}else {
monthdays=28;
}
}
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
for (int i = 1; i < week; i++) {//先打印日历前面的空格
System.out.print(" \t");//一个汉字对应2个空格
}
for (int i = 1; i <= monthdays; i++) {
System.out.print(i+" \t");
week++;
if(week==8){//每7个换行
week = 1;
System.out.println();
}
}
}
}