编写一个java应用程序,要求:输入你的生日(格式例如:2013年5月31日)。输出:从当前时间(包括今天)开始,接下来的5次生日,分别是什么日期,星期几。
时间: 2024-03-06 17:49:17 浏览: 70
好的,我可以帮你编写这个Java应用程序。以下是代码实现:
```java
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;
public class BirthdayReminder {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的生日(格式例如:2013年5月31日):");
String birthdayStr = sc.nextLine();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年M月d日");
LocalDate birthday = LocalDate.parse(birthdayStr, formatter);
LocalDate now = LocalDate.now();
int age = Period.between(birthday, now).getYears();
System.out.println("您今年" + age + "岁");
int count = 0;
LocalDate nextBirthday = birthday;
while (count < 5) {
nextBirthday = nextBirthday.plusYears(1);
long daysBetween = ChronoUnit.DAYS.between(now, nextBirthday);
if (daysBetween > 0) {
String dateStr = nextBirthday.format(formatter);
String dayOfWeek = nextBirthday.getDayOfWeek().toString();
System.out.println("距今还有" + daysBetween + "天,您的下一个生日是:" + dateStr + ",星期" + dayOfWeek.substring(0, 1) + dayOfWeek.substring(1).toLowerCase());
count++;
}
}
}
}
```
代码解释:
1. 用户通过标准输入输入生日字符串,使用`LocalDate.parse`方法将其转换为`LocalDate`对象。
2. 使用Java 8的`Period`类计算出当前年龄。
3. 使用一个`while`循环,逐年增加生日日期,直到满足条件(五个生日)为止。
4. 在循环中,使用`ChronoUnit.DAYS.between`方法计算出距离当前日期还有多少天,如果大于0,则输出生日日期和星期几。
请注意,该程序假定用户输入的生日是正确的。如果用户输入的格式不正确,程序可能会抛出异常。在实际应用中,你可能需要对用户输入进行一些验证。
阅读全文