假设星期天是每周第一天,根据给定的年份和月份,输出一个日历 (已知1900-1-1是星期一)

 
 

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;
         }
    }

猜你喜欢

转载自blog.csdn.net/qq_37455615/article/details/80220552