java编写一个程序定义一个person类包含属性name和age,以及一个比较年龄大小的方法compareAge()。然后从标准输入中读入n个人的姓名和年龄,创建n个person对象并将它们存储在一个ArrayList中。最后对ArrayList进行排序,排序规则是按照年龄从小到大的顺序,并输出排序后的结果
时间: 2024-03-05 12:53:43 浏览: 107
get和set方法示例-Java项目实战精编
好的,以下是Java代码实现:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int compareAge(Person p) {
return Integer.compare(this.age, p.age);
}
@Override
public int compareTo(Person p) {
return this.compareAge(p);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ArrayList<Person> persons = new ArrayList<>();
for (int i = 0; i < n; i++) {
String name = scanner.next();
int age = scanner.nextInt();
persons.add(new Person(name, age));
}
Collections.sort(persons);
for (Person person : persons) {
System.out.println(person.name + " " + person.age);
}
}
}
```
我们创建了一个 `Person` 类,并实现了 `Comparable` 接口,重写了 `compareTo()` 方法,以便按照年龄大小进行比较。在 `main()` 方法中,我们先读入人数 `n`,接着循环读入每个人的姓名和年龄,并创建 `Person` 对象,将它们存储在 `ArrayList` 中。最后调用 `Collections.sort()` 方法对 `ArrayList` 进行排序,输出排序后的结果即可。
以上代码可以满足你的要求,但是需要注意的是,输入的年龄必须是整数,否则会抛出异常。
阅读全文