比赛选手的平均成绩是去掉一个最高分和最低分后再计算平均分,学生考试成绩是算所有成绩的平均分,设计一个接口,包含抽象方法,表示计算平均成绩的方式;设计比赛选手和学生类实现接口,重写抽象方法,表示计算不同对象的平均成绩Java
时间: 2024-12-19 09:18:23 浏览: 4
在Java中,我们可以设计一个名为`AverageCalculator`的接口,它包含一个抽象方法`calculateAverage()`,用于表示如何计算平均成绩。这个接口将提供一个通用的框架,让比赛选手和学生类分别按照自己的规则去实现。
```java
// 定义接口 AverageCalculator
public interface AverageCalculator {
double calculateAverage();
}
// 定义比赛选手类 Player,实现 AverageCalculator 接口
public class Player implements AverageCalculator {
private List<Double> scores;
// 构造函数、添加分数等方法省略
@Override
public double calculateAverage() {
if (scores == null || scores.isEmpty()) {
return 0;
}
// 对于比赛选手,去掉最高分和最低分再计算平均分
Collections.sort(scores);
double sum = Stream.of(scores.subList(1, scores.size())).sum(); // 去掉首尾两个极端值
return sum / (scores.size() - 2); // 计算剩余分数的平均值
}
}
// 定义学生类 Student,同样实现 AverageCalculator 接口
public class Student implements AverageCalculator {
private List<Double> examScores;
// 构造函数、添加分数等方法省略
@Override
public double calculateAverage() {
if (examScores == null || examScores.isEmpty()) {
return 0;
}
// 对于学生,直接计算所有分数的平均分
return examScores.stream().average().orElse(0); // 使用流式API计算平均值
}
}
```
阅读全文