利用接口和多态,编程实现:歌手大赛 歌手大赛计算选手成绩的方法是去掉一个最高分和一个最低分后再计算平均分,而学校评估一个班级的学生成绩的平均分时,是计算全班同学的平均得分。SongGame和School类都实现了ComputeAverage接口,但实现方式不同。 1) 编写接口ComputeAverage,声明一个public double average(double x[])方法 2) 编写SongGame类,实现ComputeAverage接口 3) 编写School类 实现ComputeAverage接口 4) 编写主类Application,给定一组10个学生成绩数据a[]和一个歌手的10个得分b[],分别计算学生平均分和歌手最后得分并输出
时间: 2024-02-13 08:02:55 浏览: 31
1. ComputeAverage 接口代码如下:
```java
public interface ComputeAverage {
public double average(double x[]);
}
```
2. SongGame 类实现 ComputeAverage 接口代码如下:
```java
public class SongGame implements ComputeAverage {
@Override
public double average(double[] x) {
double max = x[0], min = x[0], sum = 0;
for (double i : x) {
if (i > max) {
max = i;
}
if (i < min) {
min = i;
}
sum += i;
}
return (sum - max - min) / 8;
}
}
```
3. School 类实现 ComputeAverage 接口代码如下:
```java
public class School implements ComputeAverage {
@Override
public double average(double[] x) {
double sum = 0;
for (double i : x) {
sum += i;
}
return sum / x.length;
}
}
```
4. Application 主类代码如下:
```java
public class Application {
public static void main(String[] args) {
double[] a = {90, 85, 78, 92, 88, 91, 87, 80, 84, 89};
double[] b = {98, 85, 92, 89, 90, 88, 95, 87, 91, 94};
ComputeAverage school = new School();
ComputeAverage songGame = new SongGame();
double avgOfA = school.average(a);
double finalScore = songGame.average(b);
System.out.println("学生成绩平均分:" + avgOfA);
System.out.println("歌手得分:" + finalScore);
}
}
```
输出结果为:
```
学生成绩平均分:86.4
歌手得分:90.625
```