编写一个ComputerAverage 类,类中有一个方法求平均分 average(doubleD]data)。定义Athletes 类和Student 类,它们都是 GomputerAverage 的子类,Atheletic类中计算选手的平均成绩的方法是去掉一个最低分,去掉一个最高分,然后求严均分。Student 类中计算平均分的方法是直接是总分除以总科目. 定义ComputerAverage类型的子类对象(上转型对象),并调用重写的方法 averge。从键盘中输入数组的元素个数,并给数组data口]元素赋值,计算相应子类的平均分。
时间: 2024-03-01 22:52:56 浏览: 94
好的,以下是代码实现:
```java
import java.util.Arrays;
import java.util.Scanner;
class ComputerAverage {
public double average(double[] data) {
double sum = 0;
for (double d : data) {
sum += d;
}
return sum / data.length;
}
}
class Athlete extends ComputerAverage {
public double average(double[] data) {
Arrays.sort(data);
double sum = 0;
for (int i = 1; i < data.length - 1; i++) {
sum += data[i];
}
return sum / (data.length - 2);
}
}
class Student extends ComputerAverage {
public double average(double[] data) {
double sum = 0;
for (double d : data) {
sum += d;
}
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 ca;
System.out.println("请选择计算平均分的对象(1:Athlete,2:Student):");
int choice = scanner.nextInt();
if (choice == 1) {
ca = new Athlete();
System.out.println("选手的平均成绩为:" + ca.average(data));
} else if (choice == 2) {
ca = new Student();
System.out.println("学生的平均分为:" + ca.average(data));
} else {
System.out.println("无效的选择!");
}
}
}
```
运行程序后,会先提示用户输入数组元素个数和元素值,然后让用户选择计算平均分的对象(1:Athlete,2:Student),最后输出计算出的平均分。
需要注意的是,Athlete 类中计算平均成绩的方法要先对数组进行排序,然后去掉一个最低分和一个最高分,再求剩下元素的平均值。Student 类中计算平均分的方法就比较简单了,直接将数组元素相加再除以数组长度即可。
阅读全文