Java萬年曆,輸入年月擷取改年月日曆表

來源:互聯網
上載者:User

標籤:

  1 //輸入年份和月份,列印出這個月的日曆表  2 /*  3     1.1900年1月1日是星期一  4     2.計算輸入的年份距離1900年有多少天再計算當年1月1日距這個月有多少天  5         1)  6     3.總天數%7得出從星期幾開始  7     註:電腦中的時間最小到1900年,此外UNIX系統認為1970年1月1日0點是時間紀元。  8     so,在本程式中不考了1900年以前的年份了。有興趣的可以自己研究下。  9 */ 10 import java.util.Scanner; 11 class Calender{ 12  13     public static void main(String[] args){ 14          15         print(); 16  17     } 18  19     //列印輸出 20     public static void print(){ 21         Scanner sc = new Scanner(System.in); 22         System.out.println("請輸入年份:"); 23         int year = sc.nextInt(); 24         System.out.println("請輸入月份(1~12):"); 25         int month = sc.nextInt(); 26  27         int days = getDays(year, month);//getDays方法詳細請往下看 28         //days+1:day是總天數,輸入月份的總天數只是這個月之前的天數, 29         //加上1變為這個月開始的第一天 30         int week = days%7==0?1:days%7+1;//開始的第一天是星期幾 31         System.out.println("日\t一\t二\t三\t四\t五\t六"); 32          33         //輸出第一行(第一個星期)空出來部分 34         for(int i=1; i<=week; i++){ 35             System.out.print(" \t"); 36         } 37  38         //輸出第一行(第一個星期)各天 39         for(int i=1; i<=7-week; i++){ 40             System.out.print(i+"\t"); 41         } 42  43         System.out.println(); 44  45         //1~12月的個月天數 46         int monthDay = 0; 47         switch(month){ 48                 case 2: 49                     if(year%4==0&&year%100!=0 || year%400==0 ){ 50                         monthDay=29; 51                     }else{ 52                         monthDay=28; 53                     } 54                     break; 55  56                 case 4: 57                 case 6: 58                 case 9: 59                 case 11: 60                     monthDay=30; 61                     break; 62  63                 default : 64                     monthDay=31; 65                     break; 66             } 67  68         //輸出剩下的日期,從第二周開始了,所以是8-week 69         for(int i=8-week; i<=monthDay; i++){ 70      71             System.out.print(i+"\t"); 72              73             //每七天換一行則當日期能整除7就換行 74             if((i+week)%7==0){ 75                 System.out.println(); 76             } 77         } 78  79  80     } 81  82     /* 83         計算當年當月的距1900年1.1的總天數 84     */ 85     public static int getDays(int year, int month){ 86         //判斷這年是閏年或者平年,得到年的總天數 87         int day1=0, day2=0; 88  89         for(int i=1900; i<year; i++){ 90             if(i%4==0&&i%100!=0 || i%400==0){ 91                 day1+=366; 92             }else{ 93                 day1+=365; 94             } 95         } 96      97         //得到月的總天數 98         for(int i=1; i<month; i++){ 99             switch(i){100                 case 2:101                     if(year%4==0&&year%100!=0 || year%400==0 ){102                         day2+=29;103                     }else{104                         day2+=28;105                     }106                     break;107 108                 case 4:109                 case 6:110                 case 9:111                 case 11:112                     day2+=30;113                     break;114 115                 default :116                     day2+=31;117                     break;118             }119         }120     121         return day1+day2;122 123     }124     125 }

 

Java萬年曆,輸入年月擷取改年月日曆表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.