java 輸入年月,獲取日曆表

/*
作日曆做業:
       輸入一個時間如: 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++;
            }
        }
         
    }
}
相關文章
相關標籤/搜索