酷代码 AI
菜单
服务商

Java实现:精准判断某日是一年第几天,避开输入、闰年及索引三大陷阱!

import java.util.Scanner; public class DayOfYear { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 读取输入的年、月、日 String input = scanner.nextLine(); String[] parts = input.split(" "); // 确保输入有三个部分 if (parts.length != 3) { System.out.println("data error!"); return; } try { int year = Integer.parseInt(parts[0]); int month = Integer.parseInt(parts[1]); int day = Integer.parseInt(parts[2]); // 验证月份范围 [1,12] if (month < 1 || month > 12) { System.out.println("data error!"); return; } // 定义每个月的天数,非闰年 int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 判断是否为闰年,如果是,2月为29天 if (isLeapYear(year)) { daysInMonth[1] = 29; } // 检查日期是否在该月的有效范围内 if (day < 1 || day > daysInMonth[month - 1]) { System.out.println("data error!"); return; } // 计算这是这一年的第几天 int dayOfYear = 0; for (int i = 0; i < month - 1; i++) { dayOfYear += daysInMonth[i]; } dayOfYear += day; System.out.println(dayOfYear); } catch (NumberFormatException e) { // 输入无法解析为整数 System.out.println("data error!"); } scanner.close(); } // 判断是否为闰年 private static boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } } 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 输入格式未严格校验,例如多空格或非数字字符可能导致解析失败 - 闰年判断逻辑错误,特别是对整百年份未正确处理400年周期 - 数组索引越界问题,尤其是在处理月份和天数映射时容易出现off-by-one错误 ######[AI写代码神器 | 567点数解答 | 2025-11-12 16:25:47]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]