用java写在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1-100分,选手的最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
时间: 2024-12-18 08:20:59 浏览: 9
在Java中,我们可以创建一个简单的程序来实现这个需求。首先,我们需要定义一个`SongContestant`类代表选手,包含一个`scores`列表来存储评委们的评分。然后我们创建一个`Judge`类表示评委,不过在这个场景下,我们不需要它,因为我们只关心得分。以下是核心部分的代码:
```java
import java.util.ArrayList;
import java.util.Collections;
class SongContestant {
private ArrayList<Integer> scores = new ArrayList<>();
// 添加分数方法
public void addScore(int score) {
scores.add(score);
}
// 计算去掉最高分和最低分后的平均分
public double calculateAverageScore() {
if (scores.size() < 2) {
return 0; // 如果不足两个分数,直接返回0
}
Collections.sort(scores); // 先排序
int highest = scores.remove(scores.size() - 1); // 删除最高分
int lowest = scores.remove(0); // 删除最低分
double average = scores.stream().mapToInt(Integer::intValue).average().orElse(Double.NaN); // 计算剩余分数的平均值
return average;
}
}
public class Main {
public static void main(String[] args) {
SongContestant contestant = new SongContestant();
for (int i = 1; i <= 10; i++) { // 模拟给10位评委打分
contestant.addScore(i * 10); // 分数范围10到100
}
double finalScore = contestant.calculateAverageScore();
System.out.printf("选手的最终得分: %.2f\n", finalScore);
}
}
```
在这个程序中,我们创建了一个`SongContestant`实例,并允许评委逐个添加分数。当评委打完所有分数后,我们计算并打印出最后的平均分。
阅读全文