编写一个程序,用户输入出生日期和当前日期,计算出实际年龄。 【输入形式】 用户在第一行输入出生日期,在第二行输入当前日期。日期格式为年.月.日,即中间用.分割。 【输出形式】 程序在下一行输出实际年龄。
时间: 2024-09-11 18:04:12 浏览: 171
为了编写这样一个程序,我们可以使用java.time包中的LocalDate类来处理日期。以下是一个简单的Java程序示例:
```java
import java.time.LocalDate;
import java.time.Period;
import java.util.Scanner;
public class AgeCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 获取用户输入的出生日期
System.out.println("请输入您的出生日期 (格式:YYYY.MM.DD):");
String birthDateInput = scanner.nextLine();
LocalDate birthDate = LocalDate.parse(birthDateInput, LocalDate::parse); // 解析字符串为日期
// 获取当前日期
LocalDate currentDate = LocalDate.now(); // 当前日期
// 计算年龄
Period agePeriod = Period.between(birthDate, currentDate);
int years = agePeriod.getYears();
// 输出年龄(如果不足一年,则输出岁数加月份数/12)
double months = agePeriod.getMonths() + agePeriod.getDays() / 30; // 假设每个月30天
if (months % 1 == 0) { // 如果月份整除,表示没有小数部分
System.out.println("您的实际年龄是: " + years + "岁");
} else {
System.out.printf("您的实际年龄是: %.1f岁", years + months / 12);
}
}
}
```
在这个程序中,我们首先创建了一个Scanner对象来获取用户的输入。然后解析输入的日期字符串,并与当前日期进行比较,得到年龄差(一个Period对象)。最后计算并打印出实际年龄。
注意:这个程序假设每个月有30天,实际计算时可能需要更精确的方法,例如使用`java.time.Period.between()`方法的默认行为,或者直接使用`java.time.Instant`进行计算。
阅读全文