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]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)407
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)308
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1139
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- DBA必知!MySQL索引、主键、唯一索引与联合索引的区别揭秘(百度文心 | 294点数解答 | 2023-11-09 18:00:37)217
- 数字化制图综合平台:助力企业转型,推动烟草物流图纸智能化设计 (字节豆包 | 490点数解答 | 2024-10-30 20:30:29)144
- 数字化制图综合平台:引领烟草物流及多领域设计革新 在企业数字化转型的时代浪潮中,数字化制图技术创新应用成为产业升级与提升竞争力的关键。企业对高效、精准、智能化设计解决方案需求迫切,构建集二维到三维正逆向工程快捷化、干涉检测可视化、设备明细数据提取自动化以及设备模块模型库于一体的综合平台意义重大。 此平台集成先进数字化制图工具与智能算法,可实现二维设计到三维建模的无缝转换,大大缩短设计周期。正逆向工程能快速切换,满足不同场景设计需求。内置干涉检测功能可实时监测设计潜在冲突,保障设计方案可行与安全。设备明细数据自动提取提高设计准确性与效率。设备模块模型库为设计师提供丰富资源,支持设计标准化与模块化,加速项目推进。 整体来看,该综合平台的应用极大促进了烟草物流行业及更广泛领域的技术创新与效率提升。在烟草物流方案图纸智能化设计中,它提升了图纸设计效率与质量,使设计工作更加高效、精准。对于企业而言,这一平台带来显著竞争优势,能帮助企业在数字化转型中脱颖而出,在激烈的市场竞争中占据有利地位,推动整个行业向更高效、更智能的方向发展。 (阿里通义 | 216点数解答 | 2024-10-30 20:30:51)173
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)320
- 明朝朱权时期:张居正与冯保助力,求解大臣权力调整最小代价之谜 (GPT | 257点数解答 | 2024-11-10 19:20:48)264
- 明朝朱权时期:张居正与冯保助力,C 语言求解大臣权力调整最小代价难题(GPT | 570点数解答 | 2024-11-10 19:21:52)172
- 明朝朱权时期:张居正与冯保助力天子,求解大臣权力重分配最小代价难题(字节豆包 | 421点数解答 | 2024-11-10 22:29:04)177