动态日历

    科技2024-11-24  27

    1、打印动态日历

    //控制台输入 年,月,动态显示 如下图的格式 //例如输入2020  9 //显示 // 一   二   三  四  五  六  日 //      1    2   3   4   5    6 //7     8    9    10  11  12  13 //..... //28    29  300 /** * 思路:1、根据年份计算是闰年还是平年,并计算这个月要打印多少天 *       2、计算1号前面需要打印多少个空格=当前 月 *          到1900年1月之前的所有天数对7取模的余数 *       3、打印空格和日期,并控制它的布局 */ public static void main(String[] args) {     Scanner sc=new Scanner(System.in);     System.out.print("请输入年份:");     int year=sc.nextInt();     System.out.print("请输入月份:");     int month=sc.nextInt();     //1、判断该年份是否为闰年     //2、计算从1900年到当前年份的月份一共多少天     int day=0;     for (int i=1900;i<year;i++){         if (isRun(i)){             day+=366;         }else {             day+=365;         }     }     for (int i=1;i<month;i++){         //获取指定月份的天数         int d=getDay(year,i);         day+=d;     }     //3、计算空格数     int k=day%7;     //4、计算这个月有多少天     int thisday=getDay(year,month);     //5、输出     System.out.println("一\t二\t三\t四\t五\t六\t日");     //5.1 先输出空格数     for (int i=0;i<k;i++){         System.out.print(" \t");     }     //5.2 输出天数     //由于 需要根据天数换行 n表示累计当前空格数和天数 是否需要换行     int n=k;     for (int i=1;i<thisday;i++){         System.out.print(i+"\t");         n++;         if (n%7==0){             System.out.println();         }     } }

    /** * 判断是否是闰年 * @param year 年份 * @return Boolean */ public static  boolean isRun(int year){     if(year%4==0 && year%100!=0 || year%400==0){         return true;     }     return false; }

    /** * 根据年份,月份判断这个月的天数 * @param year * @param month * @return */ public static int getDay(int year,int month){     int day=0;     switch (month){         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 (isRun(year)){                 day+=29;             }else {                 day+=28;             }             break;     }     return day; }

     

    Processed: 0.012, SQL: 8