万年历 Java

https://blog.csdn.net/qq_45871809/article/details/118299667

package sign_test;

import java.util.Scanner;

public class WanNianLi {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int year;// 定义年份
        int month;// 定义月份
        boolean isRunNian;// 判断是否为闰年
        int days = 0;// 月份的天数
        int totalDays = 0;// 从1900年到输入年份的总天数

        System.out.println("************************万年历************************");
        System.out.println("请输入年份:");
        year = input.nextInt();
        System.out.println("请输入月份:");
        month = input.nextInt();

        // 判断是否为闰年
        // 闰年:普通闰年(能被4整除,但不能被100整除)、世纪闰年(能被400整除)
        if (((year % 4 == 0 && year % 100 != 0)) || (year % 400 == 0)) {
            isRunNian = true;
            System.out.println(year + "年是闰年");
        } else {
            isRunNian = false;
            System.out.println(year + "年不是闰年");
        }

        // 遍历出从1900年到输入年份的总天数
        // 平年365天,闰年366天
        for (int i = 1900; i < year; i++) {
            // 判断年份i是否为闰年
            if (((i % 4 == 0 && i % 100 != 0)) || (i % 400 == 0)) {
                // 闰年366天
                totalDays += 366;
            } else {
                // 平年365天
                totalDays += 365;
            }
        }

        // 循环累计月份的天数
        // 遍历月份i的天数
        for (int i = 1; i <= month; i++) {
            // 判断月份i的天数
            switch (i) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 2:
                // 二月分闰月和平月
                if (isRunNian) {
                    days = 29;
                } else {
                    days = 28;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            default:
                System.out.println("输入信息有误!");
                ;
                break;
            }
            // 将switch判断出月份的天数加到总天数里
            if (i != month) {
                totalDays += days;
            }
        }

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        // 将具体的时间遍历出来
        // 遍历之前先求出\t
        int beforeDays;// 日期前面的\t
        beforeDays = totalDays % 7 + 1;
        if (beforeDays == 7) {
            beforeDays = 0;// 前面无空格,即为星期天
        }

        // 遍历时间,先打印日期前面的\t
        for (int i = 0; i < beforeDays; i++) {
            System.out.print("\t");
        }
        // 打印日期
        for (int i = 1; i <= days; i++) {
            System.out.print(i + "\t");
            // 满七个换行
            // 日期前的\t+遍历到的日期=7,就换行
            if ((beforeDays + i) % 7 == 0) {
                System.out.println();
            }
        }
    }
}

 

posted @ 2022-12-23 14:38  liness0713  阅读(20)  评论(0编辑  收藏  举报