编写一个程序,定义一个Person类,包含属性name和age,以及一个比较年龄大小的方法compareAge()。然后从标准输入中读入n个人的姓名和年龄,创建n个Person对象并将它们存储在一个ArrayList中。最后对ArrayList进行排序,排序规则是按照年龄从小到大的顺序,并输出排序后的结果。
时间: 2024-03-12 14:48:18 浏览: 63
根据对象的某一属性进行排序的js代码(如:name,age)
好的,这是一个Java语言的问题,我可以帮您解答。
下面是实现上述功能的Java代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void compareAge(Person p) {
if (this.age < p.getAge()) {
System.out.println(this.name + " is younger than " + p.getName());
} else if (this.age > p.getAge()) {
System.out.println(this.name + " is older than " + p.getName());
} else {
System.out.println(this.name + " and " + p.getName() + " are of the same age.");
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of persons: ");
int n = input.nextInt();
ArrayList<Person> persons = new ArrayList<Person>();
for (int i = 0; i < n; i++) {
System.out.print("Enter the name of person " + (i + 1) + ": ");
String name = input.next();
System.out.print("Enter the age of person " + (i + 1) + ": ");
int age = input.nextInt();
Person person = new Person(name, age);
persons.add(person);
}
Collections.sort(persons, new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
});
System.out.println("Sorted by age:");
for (Person person : persons) {
System.out.println(person.getName() + " " + person.getAge());
}
input.close();
}
}
```
这个程序中,我们首先定义了一个Person类,包含了一个比较年龄大小的方法compareAge(),以及name和age两个属性。然后我们使用Scanner从标准输入中读入n个人的姓名和年龄,并创建n个Person对象并将它们存储在一个ArrayList中。最后,我们对ArrayList进行排序,排序规则是按照年龄从小到大的顺序,并输出排序后的结果。
我希望我的回答能对您有所帮助。
阅读全文