输入某年某月,输入这一年过去了多少天!输入某年月份输出当前月的日历表?

输入某年某月,输入这一年过去了多少天!输入某年月份输出当前月的日历表

代码有很多被注释了,小主们可以解封尝试尝试

package com.test;

import java.util.Scanner;

/**
 * 作者:wildkid
 * 时间:2021-6-9
 * 输入一个日历得出这个月的日历信息
 */

public class demo4_f6 {
    
    
    public static void main(String[] args) {
    
    

        System.out.println();
        System.out.println("友情提示:计算一年过去了几天,可随意输入日期:\n" +
                "                      若想输出某年某月的日历则日期必须输入 1 号  否则:日历不全,但正确!");
        System.out.println();

        int sumday = 0;//加一年中每个月的天数
        int count = 0;//输入的年份已经过去了多少天
        int twomonth = 0;//累计多少个闰年


        Scanner input = new Scanner(System.in);
        System.out.println("输入年份:");
        int year = input.nextInt();

        System.out.println("输入月份:");
        int month = input.nextInt();
        if (month < 0 || month > 12) {
    
    
            System.out.println("月份输入不合法!运行结果不正确!结果选择性参考@@@");
        }

        System.out.println("输入日期:");
        int day = input.nextInt();
        if (day < 0 || day > 31) {
    
    
            System.out.println("日期输入不合法!运行结果不正确!结果选择性参考@@@");
        }

        for (int i = 1; i < month; i++) {
    
    
            if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
    
    
                sumday += 31;

            } else if (i == 4 || i == 6 || i == 9 || i == 11) {
    
    
                sumday += 30;

            } else if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
    
    //判断闰年
                sumday += 29;

            } else {
    
    
                sumday += 28;

            }
        }
        System.out.println("*********************");
        count = sumday + day;
        System.out.println(year + "年已经过了" + count + "天!");
        System.out.println("*********************");


        //计算有到少个闰年
        int flag = year - 1;
        // System.out.println("\n\n" + year + "年前的闰年年份有:");

        while (flag >= 1900) {
    
    
            //标记1900年--因为1900年的1月1号为星期一
            if ((flag % 4 == 0 && flag % 100 != 0) || (flag % 400 == 0)) {
    
      //判断闰年

                twomonth++;//统计闰年年数
                // System.out.print(flag + "\t");  //输入期间所有的闰年
            }
            flag--;
        }
        System.out.println("\n  ***1900年到" + year + "年一共历经了:  " + twomonth + " 个闰年!***");

        int totalday = 0;//计算距离1900总共有多少天!
        totalday = (year - 1900) * 365 + count + twomonth;
        //总天数=365*((year-1)-1900)+ 闰年 + 今年天数
        System.out.println("\n  ***1900年到" + year + "年一共历经了:  " + totalday + " 天!***");

        int weekspace = totalday % 7;


        System.out.println("\n\t\t\t\t\t\t " + year + "年" + month + "月");
        System.out.println("Mon\t   Tue\t   Wed\t   Thu\t   Fri\t   Sat\t   Sun"); //输出日期表头

        //写出每月的天数
        int days = 0;//标记月份中的天数
        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
    
    
            days = 31;
        } else if (month == 4 || month == 6 || month == 9 || month == 11) {
    
    
            days = 30;
        } else if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
    
    
            days = 29;
        } else {
    
    
            days = 28;
        }

        //输入日期距离1900年每个星期余几天

        for (int i = 1; i < weekspace; i++) {
    
    
            System.out.print(" \t\t");
        }
        int nub = -1;
        for (int i = day; i <= days; i++) {
    
    
            System.out.print(i + "\t\t");
            nub += 1;
            if ((nub + weekspace) % 7 == 0) {
    
    
                System.out.println();
            }

        }
        System.out.println("\n\n");
    }
}


效果图如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_45256755/article/details/117746475