某高校正在举办春季长跑运动会,现要求对运动员比赛后的成绩进行排序,找出其中成绩最好的前3名的运动员以及成绩。 (输出格式举例:name='小李score=92.0)) 样例输入: 小明 85 小花 92 小刚 78 小李 92 样例输出:name=小李score=92.0)iname=小花score=92.0iname='小明score=85.0。用java语言实现
时间: 2023-08-14 20:02:13 浏览: 46
好的,以下是Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Athlete> athleteList = new ArrayList<>();
while (scanner.hasNext()) {
String name = scanner.next();
double score = scanner.nextDouble();
athleteList.add(new Athlete(name, score));
}
Collections.sort(athleteList, new Comparator<Athlete>() {
@Override
public int compare(Athlete o1, Athlete o2) {
if (o1.getScore() == o2.getScore()) {
return o1.getName().compareTo(o2.getName());
} else {
return Double.compare(o2.getScore(), o1.getScore());
}
}
});
for (int i = 0; i < 3 && i < athleteList.size(); i++) {
Athlete athlete = athleteList.get(i);
System.out.println("name=" + athlete.getName() + "score=" + athlete.getScore());
}
}
}
class Athlete {
private String name;
private double score;
public Athlete(String name, double score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
}
```
代码思路:
1. 通过Scanner实现输入,将每个运动员的姓名和分数存入Athlete对象中,再将Athlete对象存入List中。
2. 通过Collections.sort方法对List进行排序,先按照分数从高到低排序,若分数相同则按照姓名字典序排序。
3. 遍历排序后的List,输出前三名运动员的姓名和分数。
注意事项:
1. 输入格式必须严格按照题目要求,即每个运动员的姓名和分数之间必须用空格隔开。
2. 若有多个运动员分数相同,则按照姓名字典序排序。