package com.csqf.learn.test;

import java.util.Scanner;

/**
 * @ClassName: Demo7
 * @Description: TODO
 * @author:
 * 
 *          1 2 3 4 5 6 天
 * 
 * @date: 2021年3月13日 上午9:16:56
 */
public class Demo7 {
    public static void main(String[] args) {
        // 接收年、月
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = scanner.nextInt(); // 年
        System.out.print("请输入月份:");
        int month = scanner.nextInt(); // 月
        int day = 0; // 日
        boolean leapYear; // true 为闰年 false 为平年
        if (year % 4 == 0 && year % 100 != 0 | year % 400 == 0) { // 求闰年
            leapYear = true;
        } else {
            leapYear = false;
        }

        int totalDays = 0; // 总天数
        // 用参照物 1900年 1月1日 星期一
        for (int i = 1900; i < year; i++) {
            if (i % 4 == 0 && i % 100 != 0 | i % 400 == 0) {
                totalDays+=366;
            } else {
                totalDays+=365;
            }
        }
        // 计算月份是 30 还是 31 闰年另算2月(29)(28) 然后 算出 year这一年 到 month这一月之前的总月份天数
        int daysTheMonth = 0;
        for (int i = 1; i <= month; i++) {
            switch (i) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                day = 31;
                break;
            case 2:
                if (leapYear) {
                    day = 29;
                } else {
                    day = 28;
                }
                break;
            default:
                day = 30;
                break;  
            }
            if (i < month) {
                daysTheMonth = day + daysTheMonth; // 月份天数和
            }
        }
        System.out.println("daysTheMonth>>>"+daysTheMonth);
        totalDays = daysTheMonth + totalDays; // 所有天数 年月天数和
        System.out.println("totalDays>>" + totalDays);

        int fisrtday = 0; // 第一天
        int temp = totalDays % 7;
        // 判断天数是星期几 0 就是 星期天
        if (temp == 7) {
            fisrtday = 0;
        } else {
            fisrtday = temp;
        }

        System.out.println("fisrtday>>" + fisrtday);

        // 打印日历 1 2 3 4 5 6 7
        System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
        for (int i = 0; i < fisrtday; i++) {
            System.out.print("\t");
        }
        for (int j = 1; j < day; j++) {

            System.out.print(j + "\t");
            if ((totalDays + j) % 7== 0) {
                System.out.println("\t");
            }
        }
    }

}
最后修改:2021 年 03 月 14 日 09 : 09 PM
如果觉得我的文章对你有用,请随意赞赏