用java实现以下功能:输入n个人的出生年月日信息,按照年龄大小排序输出
时间: 2024-02-05 21:14:15 浏览: 68
以下是使用Java实现输入n个人的出生年月日信息,按照年龄大小排序输出的代码:
```java
import java.time.LocalDate;
import java.time.Period;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class SortByAge {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入人数:");
int n = sc.nextInt();
ArrayList<Person> people = new ArrayList<>();
for (int i = 0; i < n; i++) {
System.out.println("请输入第" + (i+1) + "个人的出生年月日(格式:yyyy-MM-dd):");
String birthdayStr = sc.next();
LocalDate birthday = LocalDate.parse(birthdayStr);
people.add(new Person(birthday));
}
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
});
System.out.println("按年龄排序后的结果为:");
for (Person person : people) {
System.out.println(person);
}
}
static class Person {
private LocalDate birthday;
public Person(LocalDate birthday) {
this.birthday = birthday;
}
public int getAge() {
return Period.between(birthday, LocalDate.now()).getYears();
}
@Override
public String toString() {
return "出生年月日:" + birthday + ",年龄:" + getAge();
}
}
}
```
代码中首先通过Scanner类从控制台输入n个人的出生年月日信息,并将它们封装成Person对象存储在ArrayList中。
接着使用Collections.sort()方法对ArrayList进行排序,其中使用了一个Comparator匿名内部类来指定排序规则,即按照人的年龄大小进行排序。
最后,遍历排序后的ArrayList,输出每个人的出生年月日和年龄。
阅读全文