You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现输入年份计算天数含闰年判断及年份区间总天数统计

Java代码修改实现方案

核心规则说明

闰年判断规则满足以下任意一个即可:

  • 年份能被4整除但不能被100整除
  • 年份能被400整除
    闰年2月为29天,全年总天数366;平年2月为28天,全年总天数365。

封装单年份总天数计算方法

你可以先封装一个独立的计算方法,逻辑如下:

public static int getDaysOfYear(int year) {
    // 平年默认365天
    int days = 365;
    // 判断是否为闰年,是则加1天
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        days += 1;
    }
    return days;
}

如果需要同时输出对应年份每个月的天数,也可以调整方法逻辑:

public static int getDaysOfYear(int year) {
    int[] daysArr = DAYS_OF_MONTH.clone();
    int total = 0;
    // 闰年调整2月天数
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        daysArr[1] = 29;
    }
    for (int m = 0; m < MONTHS.length; m++) {
        System.out.println(MONTHS[m] + " has " + daysArr[m] + " days.");
        total += daysArr[m];
    }
    System.out.println("===================\n" + year + "年总天数:" + total + "天");
    return total;
}

完整修改后代码

import java.util.Scanner;

public class Homework {
    // 固定常量提为全局静态常量,方便复用
    private static final String[] MONTHS = {
            "January", "February", "March", "April", "May", "June",
            "July", "August", "September", "October", "November", "December"
    };
    private static final int[] DAYS_OF_MONTH = {31, 28 , 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    public static void main(final String[] args) {
        // 1. 读取用户输入的指定年份并计算天数
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要查询的年份:");
        int inputYear = scanner.nextInt();
        getDaysOfYear(inputYear);

        // 2. 计算1900年到1999年总天数
        int totalDaysOfCentury = 0;
        for (int year = 1900; year <= 1999; year++) {
            totalDaysOfCentury += getDaysOfYear(year);
        }
        System.out.println("===================");
        System.out.println("1900年到1999年总天数:" + totalDaysOfCentury + "天");
        scanner.close();
    }

    // 封装单年份天数计算方法
    public static int getDaysOfYear(int year) {
        int days = 365;
        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            days += 1;
        }
        return days;
    }
}

改动说明

  • 引入Scanner类实现用户输入年份的读取
  • 封装getDaysOfYear方法,传入年份即可返回对应年的总天数,内置闰年判断逻辑,可复用性更高
  • 新增1900-1999年的遍历累加逻辑,直接调用封装好的方法即可快速计算总天数
  • 把固定常量提为全局静态常量,减少重复定义

内容的提问来源于stack exchange,提问作者Giulia Petrilli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:12:00