请用java编写程序【问题描述】 从键盘中读入最多不超过50个学生的学生信息(包括空格隔开的姓名、学号、年龄信息,以学号从低到高排序) 【输入形式】 每次键盘读入最多不超过50个学生的学生信息: 第一行为学生人数; 后面每一行为空格隔开的学生学号、姓名、年龄,其中学号和年龄都是整数。 【输出形式】 分别以姓名顺序(从低到高)和年龄顺序(从低到高)将学生信息输出,每行输出一位学生的信息,其中学号占3位,姓名(英文)占6位,年龄占3位,均为右对齐。年龄相同时按姓名从低到高排序。两种顺序的输出结果用一行空行相隔。 【输入样例】 4 1 aaa 22 45 bbb 23 54 ddd 20 110 ccc 19 【输出样例】 1 aaa 22 45 bbb 23 110 ccc 19 54 ddd 20 110 ccc 19 54 ddd 20 1 aaa 22 45 bbb 23 【样例说明】 从键盘输入四个学生记录,分别按姓名和年龄排序并输出。
时间: 2024-02-10 08:03:18 浏览: 59
以下是Java代码实现:
```java
import java.util.*;
class Student implements Comparable<Student> {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public int compareTo(Student o) {
if (this.age == o.age) {
return this.name.compareTo(o.name);
} else {
return this.age - o.age;
}
}
@Override
public String toString() {
return String.format("%3d %-6s%3d", id, name, age);
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Student> students = new ArrayList<>();
for (int i = 0; i < n; i++) {
int id = scanner.nextInt();
String name = scanner.next();
int age = scanner.nextInt();
students.add(new Student(id, name, age));
}
Collections.sort(students, Comparator.comparing(Student::getName));
for (Student student : students) {
System.out.println(student);
}
System.out.println();
Collections.sort(students);
for (Student student : students) {
System.out.println(student);
}
}
}
```
解释一下代码:
1. 定义 `Student` 类,包括学号、姓名、年龄等属性。实现 `Comparable` 接口,以便排序时可以按照要求进行比较。
2. 在 `Main` 类中,先读入学生信息,存储到 `List` 中。
3. 按照姓名排序,输出结果。
4. 按照年龄排序,输出结果。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)