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
相关产品推荐
相关产品推荐

