import java.util.Scanner;
public class Calendar {
//静态游离块
static{
System.out.println("-----------------------日历------------------------");
}
//游离块
{
System.out.println("日\t一\t二\t三\t四\t五\t六\t" );
}
//求该年该月一共有多少天
public static int getDay(int year,int mou){
int day=0;
switch (mou) {
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;
break;
default:
break;
}
return day;
}
//求该月第一天为星期几(1-7)
public static int getWeekday(int year,int mou){
int day = 0;
//计数器,计算从1900到输入的日期一共多少天
int count = 0;
//计算1900-上一年的总天数
for(int i = 1900;i < year;i++){
//如果是闰年366天,否则365天
if((i % 4 == 0)&&(i % 100 == 0)||(i % 400 == 0))
count+=366;
else
count+=365;
}
//计算到月总天数
for(int i =0; i < mou;i++){
count+=getDay(year, i);
}
//求该月第一天为星期几
day=(count)%7;
return day;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int mou = scanner.nextInt();
System.out.println("\t\t"+ year +"年-"+ mou +"月\t\t");
System.out.println("---------------------------------------------------");
Calendar calendar = new Calendar();
for(int j=0;j<getWeekday(year, mou);j++){
System.out.print("\t");
}
for(int i = 1;i <= getDay(year, mou);i++){
System.out.print(i+"\t");
if((i+getWeekday(year, mou))%7==0)
System.out.println();
}
System.out.println();
System.out.println("---------------------------------------------------");
}
}
}