1. 程式人生 > 實用技巧 >編寫萬年曆:輸入一個年份,再輸入一個月份,把那個月的日曆打印出來(1900年1月1日是星期一)

編寫萬年曆:輸入一個年份,再輸入一個月份,把那個月的日曆打印出來(1900年1月1日是星期一)

主方法程式碼:
 1 public static void main(String[] args) {
 2         Scanner in = new Scanner(System.in);
 3         //輸入年份
 4         System.out.println("請輸入年份(1900之後的):");
 5         int year = in.nextInt();
 6         //輸入月份
 7         System.out.println("請輸入月份:");
 8         int month = in.nextInt();
 9         //
判斷資料輸入是否有誤 10 if (year < 1900 || month >12 || month < 1){ 11 System.out.println("對不起,你輸入的資料有誤!"); 12 return; 13 } 14 //獲取1900年到輸入年份的總天數 15 int allDayOfYear = getAllDayOfYear(1900,year); 16 17 //獲取輸入年份從1月到輸入月份的總天數 18 int allDayOfMonth = getAllDayOfMonth(year,1,month);
19 20 //獲得總天數 21 int allDay = allDayOfYear + allDayOfMonth; 22 //列印日期 23 printCalendar(allDay,getDayOfMonth(year,month)); 24 25 }
計算1900到輸入年份的總天數的方法程式碼
public static int getAllDayOfYear(int startYear,int endYear){
        //定義年的總天數
        int allDayOfYear = 0;
        
for (int i = startYear; i < endYear; i++) { if (judgeLeapYear(i)){ allDayOfYear += 366; }else { allDayOfYear +=365; } } return allDayOfYear; }
計算輸入年份從1月到輸入月份的總天數方法程式碼
1 public static int getAllDayOfMonth(int year,int startMonth,int endMonth){
2         int allDayOfMonth = 0;
3         for (int i = startMonth; i < endMonth; i++) {
4             allDayOfMonth += getDayOfMonth(year,i);
5         }
6         return allDayOfMonth;
7     }
獲得每一個月的天數方法程式碼
 1 public static int getDayOfMonth(int year,int month){
 2         //定義月的天數
 3         int day = 0;
 4         switch (month){
 5             case 1:
 6             case 3:
 7             case 5:
 8             case 7:
 9             case 8:
10             case 10:
11             case 12:
12                 day = 31;
13                 break;
14             case 4:
15             case 6:
16             case 9:
17             case 11:
18                 day = 30;
19                 break;
20             case 2:
21                 if (judgeLeapYear(year)){
22                     day = 29;
23                 }else {
24                     day = 28;
25                 }
26                 break;
27         }
28         return day;
29     }
判斷是否為閏年方法程式碼
1 public static boolean judgeLeapYear(int year){
2         if (year % 4 == 0 && year % 100 !=0 || year % 400 == 0){
3             return true;
4         }
5         return false;
6     }
列印日曆方法程式碼
 1 public static void printCalendar(int allDay,int day){
 2         //列印開頭的資訊
 3         System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
 4         //換行變數
 5         int num = 0;
 6         //計算輸入的月份1號是星期幾
 7         int week = allDay % 7 +1;
 8         for (int i = 0; i < week; i++) {
 9             System.out.print("\t\t");
10             num++;
11         }
12         //列印日期
13         for (int i = 1; i <= day; i++) {
14             //判斷
15             if (num %7 == 0){
16                 System.out.println();
17             }
18             System.out.print(i+"\t\t");
19             num++;
20         }
21     }