7-2 容器-HashMap-排序 分数 10 作者 蔡轲 单位 南昌航空大学 输入多个学生的成绩信息,包括:学号、姓名、成绩。 学号是每个学生的唯一识别号,互不相同。 姓名可能会存在重复。 要求:使用HashMap存储学生信息。 输入格式: 输入多个学生的成绩信息,每个学生的成绩信息格式:学号+英文空格+姓名+英文空格+成绩 以“end”为输入结束标志 输出格式: 按学号从大到小的顺序输出所有学生信息,每个学生信息的输出格式:学号+英文空格+姓名+英文空格+成绩
时间: 2024-03-14 10:45:04 浏览: 168
好的,我理解了你的问题。看起来你需要一个程序来接收并存储多个学生的成绩信息,并按照学号从大到小的顺序输出所有学生信息,对吗?我可以提供一个Java程序来实现这个功能。以下是程序代码:
```java
import java.util.*;
class Student implements Comparable<Student> {
private String id;
private String name;
private int score;
public Student(String id, String name, int score) {
this.id = id;
this.name = name;
this.score = score;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
@Override
public int compareTo(Student o) {
return o.getId().compareTo(this.getId());
}
@Override
public String toString() {
return id + " " + name + " " + score;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Student> map = new HashMap<>();
while (true) {
String input = scanner.nextLine();
if (input.equals("end")) {
break;
}
String[] tokens = input.split(" ");
String id = tokens[0];
String name = tokens[1];
int score = Integer.parseInt(tokens[2]);
Student student = new Student(id, name, score);
map.put(id, student);
}
List<Student> students = new ArrayList<>(map.values());
Collections.sort(students);
for (Student student : students) {
System.out.println(student);
}
}
}
```
程序首先定义了一个`Student`类,用来存储每个学生的信息。`Student`类实现了`Comparable`接口,以便可以按照学号从大到小排序。然后,在`Main`类中,程序使用`Scanner`类来读取用户输入,并将每个学生的信息存储在一个`HashMap`对象中。然后,程序将所有学生的信息存储在一个`ArrayList`对象中,并使用`Collections.sort()`方法按照学号从大到小排序。最后,程序遍历`ArrayList`对象,并按照题目要求输出每个学生的信息。
请注意,程序假定输入数据的格式是正确的,如果输入数据格式不正确,程序可能会抛出异常。另外,程序的输出格式必须与题目要求完全一致,否则可能会导致测试不通过。
阅读全文