取消上述代码中的优先队列和普通队列,并将学生姓名和成绩分开输入,改写上述代码
时间: 2024-09-27 10:08:19 浏览: 26
如果你想取消使用优先队列和普通队列,可以采用更简单的方式来遍历和排序学生信息。当用户一次只输入一个学生的信息时,我们可以直接将名字和成绩存储到一个集合(如HashMap或ArrayList)中,然后在遍历完所有学生后,再对集合进行排序。这里是一个修改过的Java代码示例:
```java
import java.util.*;
public class StudentSorter {
public static void main(String[] args) {
// 存储学生信息的Map
Map<String, Integer> students = new HashMap<>();
// 获取学生数量
Scanner scanner = new Scanner(System.in);
System.out.println("请输入班级学生人数:");
int numStudents = scanner.nextInt();
// 遍历输入学生信息
for (int i = 0; i < numStudents; i++) {
System.out.print("请输入第" + (i+1) + "名学生的姓名和成绩 (用空格分隔): ");
String[] input = scanner.nextLine().split(" ");
students.put(input[0], Integer.parseInt(input[1])); // 存储学生姓名和成绩
}
// 对学生信息进行排序
List<Map.Entry<String, Integer>> sortedStudents = new ArrayList<>(students.entrySet());
sortedStudents.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));
// 输出结果
for (Map.Entry<String, Integer> entry : sortedStudents) {
System.out.printf("%-" + 15 + "s%5d\n", entry.getKey(), entry.getValue());
}
}
}
```
在这个版本中,我们不再需要额外的`printSortedStudents`方法,因为可以直接通过`sortedStudents`列表的键值对输出。注意,由于HashMap的特性,插入顺序通常不会改变,但如果你需要保持原始的输入顺序,可以考虑使用`LinkedHashMap`替换。
阅读全文