复杂 java 成绩排名
时间: 2023-10-14 10:09:57 浏览: 43
以下是一个可能的 Java 成绩排名程序,它将从命令行读取每个学生的分数和姓名,然后按分数从高到低排名并打印输出排名结果:
```java
import java.util.*;
public class ScoreRank {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> scores = new HashMap<>();
System.out.print("请输入学生数目:");
int num = scanner.nextInt();
scanner.nextLine(); // 消耗掉换行符
for (int i = 1; i <= num; i++) {
System.out.print("请输入第" + i + "个学生的姓名和分数,中间用空格隔开:");
String[] parts = scanner.nextLine().split(" ");
String name = parts[0];
int score = Integer.parseInt(parts[1]);
scores.put(name, score);
}
List<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(scores.entrySet());
Collections.sort(sortedEntries, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> e1, Map.Entry<String, Integer> e2) {
return e2.getValue().compareTo(e1.getValue());
}
});
System.out.println("成绩排名:");
int rank = 1;
for (Map.Entry<String, Integer> entry : sortedEntries) {
System.out.println(rank + ". " + entry.getKey() + ": " + entry.getValue());
rank++;
}
}
}
```
这个程序使用了 Java 的集合框架中的 Map 和 List,并且定义了一个匿名内部类作为比较器来进行排序。在打印排名结果时,程序使用了一个变量来记录当前排名,每次输出一个学生的信息时就将排名加一。