根据用户输入的年份打印该年的日历

概要:

根据用户输入的年份打印该年的日历

| |目录

package net.xsoftlab.nana;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
 * 根据用户输入的年份打印日历
 * @author zhouhongna
 *
 */
public class PrintCalendar {
    public static void main(String[] args) throws Exception {
        // 获取年份
        System.out.println("请输入年份:");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 把输入的字符串转换成整型数
        int year = Integer.parseInt(br.readLine());
        PrintCalendar pc = new PrintCalendar();
        pc.print_it(year);
    }
    public void print_it(int y) {
        int month = 12;
        // 获得该年的第一天是星期几
        int weekday = get_weekday(y);
        for (int i = 1; i <= month; i++) {
            // 打印每个月份的模板
            print_week(i);
            for (int j = 0; j < weekday; j++) {
                System.out.print('	');
            }
            // 获取该月天数
            int day = get_day(i, y);
            for (int d = 1; d <= day; d++) {
                if (d < 10) {
                    System.out.print(" " + d + "      ");
                } else {
                    System.out.print(d + "      ");
                }
                weekday++;
                if (weekday > 6) {
                    System.out.println();
                    weekday = 0;
                }
            }
            System.out.println();
            System.out.println();
        }
    }
    // 打印每个月份的模板
    void print_week(int m) {
        System.out.println("                        " + m + "月");
        System.out.println("日" + '	' + "一" + '	' + "二" + '	' + "三" + '	'
                + "四" + '	' + "五" + '	' + "六" + '	');
    }
    // 计算该年的第一天是星期几
    int get_weekday(int y) {
        int num = y * 365;
        int i = 1;
        // 闰年多计算一天
        while (i < y) {
            if (is_Leapyear(i)) {
                num++;
            }
            i++;
        }
        return num % 7;
    }
    // 获取该月天数
    int get_day(int m, int y) {
        switch (m) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        case 2:
            if (is_Leapyear(y)) {
                return 29;
            } else {
                return 28;
            }
        default:
            return 0;
        }
    }
    // 判断是否为闰年
    boolean is_Leapyear(int y) {
        if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0)) {
            return true;
        } else {
            return false;
        }
    }
}
评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消