
package For_the_training;
import java.time.Year;
import java.util.Scanner;
//假设星期天是每周第一天,根据给定的年份和月份,输出一个日历 (已知1900-1-1是星期一)
public class M2 {
public static void main(String[] args) {
int x=0;
Scanner Sc = new Scanner(System.in);
System.out.print("请输入年份:");
int year=Sc.nextInt();
System.out.print("请输入月份:");
int month=Sc.nextInt();
int []months={31,28,31,30,31,30,31,31,30,31,30,31};
int Month_days=0;
if (Year_Day(year)==366){
months[1]=29;
}
System.out.println(" ------"+year+"年"+month+"月------");
System.out.println("日 一 二 三 四 五 六");
int all_days=Minus_Day(year)+Minus_Day2(year,month);
switch ((all_days-1)%7){
case 0:x=0;break;
case 1:x=-1;break;
case 2:x=-2;break;
case 3:x=-3;break;
case 4:x=-4;break;
case 5:x=-5;break;
case 6:x=1;break;
}
for(int i=x;i<=months[month-1];i++){
if(i<=0){System.out.print(" ");}
if(((i-x+1)%7!=0&&i<10&&i>0)){System.out.print(i+" ");}
if(i>0&&i<10&&(i-x+1)%7==0) {System.out.println(i+" ");}
if(((i-x+1)%7!=0&&i>=10)){System.out.print(i+" ");}
if((i>=10&&(i-x+1)%7==0)) {System.out.println(i+" ");}
}
}
public static int Minus_Day(int year){
int Year_days=0;
int Year[]=new int[10000];
for(int i=0;ilength;i++){
if(i%400==0||(i%4==0&&i%100!=0)){Year[i]=366;}
else{Year[i]=365;}}
if(year>=1900){
for(int y=1900;y<=year;y++){
Year_days+=(Year[y]);
}
}else{
for(int y=year;y<=1900;y++){
Year_days+=(Year[y]);
}
}
return Year_days;
}
public static int Year_Day(int year){
int Year[]=new int[10000];
for(int i=0;ilength;i++){
if(i%400==0||(i%4==0&&i%100!=0)){Year[i]=366;}
else{Year[i]=365;}
}
return Year[year];
}
public static int Minus_Day2(int year,int month){
int []months={31,28,31,30,31,30,31,31,30,31,30,31};
int Month_days=0;
if (Year_Day(year)==366){
months[1]=29;
}
for(int i=0;i<(month-1);i++) {
Month_days+=months[i];
}
return Month_days;
}
}