编写一个ComputerAverage类,类中有一个方法求平均分average(double[] data)。定义Athletes类和Student类,它们都是ComputerAverage的子类,Atheletic类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求平均分。Student类中计算平均分的方法是直接是总分除以总科目。 要求:定义ComputerAverage类型的子类对象(上转型对象),并调用重写的方法averge。从键盘中输入数组的元素个数,并给数组data[]元素赋值
时间: 2024-02-28 20:57:36 浏览: 152
学生类平均成绩的计算
好的,我已经理解了您的问题。以下是符合您要求的Java代码:
```
import java.util.Scanner;
class ComputerAverage {
public double average(double[] data) {
double sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum / data.length;
}
}
class Athlete extends ComputerAverage {
public double average(double[] data) {
double sum = 0;
double min = Double.MAX_VALUE;
double max = Double.MIN_VALUE;
for (int i = 0; i < data.length; i++) {
if (data[i] < min) {
min = data[i];
}
if (data[i] > max) {
max = data[i];
}
sum += data[i];
}
return (sum - min - max) / (data.length - 2);
}
}
class Student extends ComputerAverage {
public double average(double[] data) {
double sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum / data.length;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数组的元素个数:");
int n = scanner.nextInt();
double[] data = new double[n];
System.out.println("请依次输入数组的元素:");
for (int i = 0; i < n; i++) {
data[i] = scanner.nextDouble();
}
ComputerAverage athlete = new Athlete();
ComputerAverage student = new Student();
System.out.println("选手的平均成绩是:" + athlete.average(data));
System.out.println("学生的平均成绩是:" + student.average(data));
}
}
```
首先,我们定义了一个`ComputerAverage`类,其中有一个方法`average`,可以计算一个数组的平均值。
然后,我们定义了两个子类`Athlete`和`Student`,它们都继承自`ComputerAverage`类,并且重写了父类的`average`方法。`Athlete`类中的方法会去掉一个最低分和一个最高分,然后求平均分;`Student`类中的方法是直接将总分除以总科目。
在`Main`类中,我们从键盘中输入数组的元素个数,并给数组`data`元素赋值。然后,我们定义了一个`Athlete`类型和一个`Student`类型的对象,并分别调用它们的`average`方法,输出选手的平均成绩和学生的平均成绩。
阅读全文