A new day has come!

一位热爱编程与阅读的新博主加入优快云社区,分享个人兴趣与编程乐趣。

       落户csdn啦,感觉真的好极了。A new day has come,原本是Celine dion的一首歌名,拿到这里作题目也是一闪念间想到的,缘分呀:)

下面做一下自我介绍——

       好静,少言,爱好甚广,然精通者少。好读书,喜程序,常沉迷其中,每有小作,自得其乐。

       

给出的代码存在一些问题,下面来进行分析并给出修正后的代码。 ### 问题分析 1. **输出语句不完整**:`System.out.println("Your birthday has already happe` 未完成,应补充完整为 `Your birthday has already happened this year.`。 2. **未处理生日还未到的情况**:代码只处理了生日已过或者当天是生日的情况,未处理生日还未到的情况。 3. **未处理输入异常**:输入的月份、日期和年份可能不符合实际情况,如月份不在 1 - 12 之间,日期超出该月的最大天数等,代码未对这些情况进行处理。 ### 修正后的代码 ```java import java.time.LocalDate; import java.time.DateTimeException; import java.util.Scanner; public class Birthday { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); try { System.out.print("Enter your birth month [1..12]: "); int month = scanner.nextInt(); System.out.print("Enter your birth day of month: "); int day = scanner.nextInt(); System.out.print("Enter your birth year [4 - digit year]: "); int year = scanner.nextInt(); LocalDate today = LocalDate.now(); int currentYear = today.getYear(); LocalDate birthdayThisYear = LocalDate.of(currentYear, month, day); if (today.isAfter(birthdayThisYear) || today.isEqual(birthdayThisYear)) { System.out.println("Your birthday has already happened this year."); } else { System.out.println("Your birthday is yet to come this year."); } } catch (DateTimeException e) { System.out.println("Invalid date input: " + e.getMessage()); } finally { scanner.close(); } } } ``` ### 代码解释 1. **输入处理**:使用 `Scanner` 从控制台读取用户输入的生日信息,包括月份、日期和年份。 2. **日期创建**:使用 `LocalDate.of` 方法创建今年的生日日期。 3. **日期比较**:使用 `isAfter` 和 `isEqual` 方法比较今天的日期和今年的生日日期,判断生日是否已过。 4. **异常处理**:使用 `try-catch` 块捕获 `DateTimeException`,处理输入的日期不合法的情况。 5. **资源关闭**:使用 `finally` 块确保 `Scanner` 资源被关闭。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值