/*
- 输入年份和月份并计算距离1900年1月1日多少天
- 闰年:能被400或4整除,但不能被100整除
- 31天:1,3,5,7,8,10, 12
- 30天4,6,9, 11
- 2月:28,29
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int y = sc.nextInt();
if(y<1900){
System.out.println("输入错误");
return;
}
System.out.println("请输入月份");
int m = sc.nextInt();
if(m<1||m>12){
System.out.println("输入错误");
return;
}
int s = 0;
//判断是否为闰年
//计算整年天数
for(int i=1900;i<y;i++)
{
if(i%4==0 && i%100!=0 || i%400==0){
s = s+366;
}else {
s = s+365;
}
}
//计算整月天数
for(int i = 1;i<m;i++){
if((y%4==0 && y%100!=0 || y%400==0)&&i==2){
s=s+29;
}else if(!(y%4==0 && y%100!=0 || y%400==0)&&i==2){
s=s+28;
}else if(i==4 || i==6 ||i==9 ||i==11){
s=s+30;
}else{
s=s+31;
}
}
s=s+1;
System.out.println("------"+y+"年"+m+"月"+"------");
System.out.println("日 一 二 三 四 五 六");
int week=s%7;
//判断输入月份有多少天
int M = 0;
if((y%4==0 && y%100!=0 || y%400==0)&&m==2){
M=29;
}else if(!(y%4==0 && y%100!=0 || y%400==0)&&m==2){
M=28;
}else if(m==4 || m==6 ||m==9 ||m==11){
M=30;
}else{
M=31;
}
//打印开头空白
for(int i = 0;i<week;i++){
System.out.print(" ");
}
//打印日期
for(int i = 1;i<=M;i++){
//打印小于10的日期并补空格
if(i<10){
System.out.print(" ");
}
if((week+i)%7==0){//每到星期六就需要换行
System.out.println(i+" ");
}else{
System.out.print(i+" ");
}
}