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;i<Year.length;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;i<Year.length;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; } }