/* 作日曆做業: 輸入一個時間如: 2016-11 就顯示2016年11月的日曆顯示 */ import java.util.*; class calendar { public static void main(String[] args){ System.out.print("請選擇年份(大於1990年):"); Scanner input = new Scanner(System.in); int year = input.nextInt(); System.out.print("請選擇該年的月份:"); int month = input.nextInt(); // 先判斷year是不是閏年 boolean Renyear; if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { System.out.println(year + "是閏年"); Renyear = true; } else { System.out.println(year + "是平年"); Renyear = false; } //記錄當月的天數 int day = 0; switch (month){ case 1: day = 31; break; case 3: day = 31; break; case 4: day = 30; break; case 5: day = 31; break; case 6: day = 30; break; case 7: day = 31; break; case 8: day = 31; break; case 9: day = 30; break; case 10: day = 31; break; case 11: day = 30; break; case 12: day = 31; break; default: if (Renyear) { day = 29; } else { day = 28; } break; } System.out.println(year + "年" + month + "月" + "有" + day + "天" + "\t"); System.out.println(month + "月份的日曆以下:"); // 從1990年到指定日期的天數,1990年1月1日爲星期一。 int sum = 0; for(int i = 1990;i < year; i++) { // 判斷是不是閏年 if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { sum = sum + 366; } else { sum = sum + 365; } } // 統計月份的天數 for (int i = 1; i < month; i++) { if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) { // 大月 sum = sum + 31; } else if (i == 4 || i == 6 || i == 9 || i == 11){ // 小月 sum = sum + 30; } else { // 二月 if (Renyear) { sum = sum + 29; } else { sum = sum + 28; } } } int blank = sum % 7 + 1;//blank開始輸出的空格數 +1是從星期天開始; System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); int temp = 1; for (int i = 0; i < blank; i++) { System.out.print("\t"); temp++; } if (temp > 7){ System.out.println(""); temp = 1; } for (int i = 1; i <= day; i++) { if (temp % 7 == 0){ System.out.print(i + "\n");//控制換行 temp = 1; } else{ System.out.print(i + "\t"); temp++; } } } }