JAVA输出日历(整合代码)

来源:互联网 发布:域名权重批量查询工具 编辑:程序博客网 时间:2024/06/10 05:17

①依靠算法实现:

    public static void main(String[] args) {        System.out.println("欢 迎 使 用 万 年 历");        Scanner input = new Scanner(System.in);        System.out.print("\n请选择年份: ");        int year = input.nextInt();        System.out.print("\n请选择月份: ");        int month = input.nextInt();        System.out.println();        int days = 0; // 存储当月的天数        boolean isRn;        /* 判断是否是闰年 */        if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年            isRn = true; // 闰年        } else {            isRn = false;// 平年        }        /* 计算输入的年份之前的天数 */        int totalDays = 0;        for (int i = 1900; i < year; i++) {            /* 判断闰年或平年,并进行天数累加 */            if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年                totalDays = totalDays + 366; // 闰年366天            } else {                totalDays = totalDays + 365; // 平年365天            }        }        /* 计算输入月份之前的天数 */        int beforeDays = 0;        for (int i = 1; i <= month; i++) {            switch (i) {            case 1:            case 3:            case 5:            case 7:            case 8:            case 10:            case 12:                days = 31;                break;            case 2:                if (isRn) {                    days = 29;                } else {                    days = 28;                }                break;            default:                days = 30;                break;            }            if (i < month) {                beforeDays = beforeDays + days;            }        }        totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数        /* 计算星期几 */        int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6        int temp = 1 + totalDays % 7; // 从1900年1月1日推算        if (temp == 7) { // 求当月第一天            firstDayOfMonth = 0; // 周日        } else {            firstDayOfMonth = temp;        }        /* 输出日历 */        System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");        for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) {            System.out.print("\t"); // 输出空格        }        for (int i = 1; i <= days; i++) {            System.out.print(i + "\t");            if ((totalDays + i - 1) % 7 == 5) { // 如果当天为周六,输出换行                System.out.println();            }        }    }

②使用日历函数:

    public static void main(String[] args) {        String[] wd = { "日", "一", "二", "三", "四", "五", "六" };        Scanner s = new Scanner(System.in);        P("请输入要查询的年份:");        int y = s.nextInt();        P("请输入月份:");        int m = s.nextInt();        GregorianCalendar g = new GregorianCalendar(y, m - 1, 1);        P("\n星期\t");        for (int j = 0; j < wd.length; ++j)            P(wd[j] + "\t");        // 星期日到星期一的字        P();        for (int j = 0; j < g.get(Calendar.DAY_OF_WEEK); ++j)            P("\t");        // 补齐第一行的空格        int thisMonth = g.get(Calendar.MONTH);        // 获取月份        for (int j = 1; j <= 31; ++j) {            int d = g.get(Calendar.DAY_OF_MONTH);            P(d + "\t");            // 输出日期,例如某月的一号            if (g.get(Calendar.DAY_OF_WEEK) == 7) {                P("\n\t");            }            // 如果当前天为星期六则回车            g.add(Calendar.DAY_OF_YEAR, 1);            // 加一天            if (g.get(Calendar.MONDAY) != thisMonth) {                // 判断目前天数为几月                P("\n\n");                break;            }        }    }    static void P(String s) {        System.out.print(s);    }    static void P() {        System.out.println();    }
0 0