实验六,java接口

题目:体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。编写能够满足如下条件的程序:

1. 定义一个接口,包含计算平均值的抽象方法。

2. 定义一个实现上述接口的用于计算体操比赛选手成绩的类。

3. 定义一个实现上述接口的用于计算班级平均成绩的类。。

4. 在主类中通过接口回调分别计算并输出体操选手和班级的成绩。

1.代码

AverScore.java
public interface AverScore {
	void averageScore(double [] score); //接收一个分数数组,计算平均数并输出
} 
GymnasticsScore.java
import java.util.Arrays;
public class GymnasticsScore implements AverScore{
	public void averageScore(double [] score) {
		Arrays.sort(score);//调用Array类方法sort,将数组从小到大排序

		double sum = 0;
		for (int i = 1; i < score.length - 1; i++) {
			sum += score[i]; 
		}//去掉一个最高分,去掉一个最低分,并计算总分

		System.out.printf("体操选手成绩为:%.2f\n", sum / (score.length - 2));//计算体操选手平均分并输出
	}
}
ClassScore.java
public class ClassScore implements AverScore{
	public void averageScore(double [] score) {
		
		double sum = 0;
		for (int i = 0; i < score.length; i++) {
			sum += score[i];
		}//计算总分
		System.out.printf("班级平均成绩为:%.2f\n", sum / score.length);
	}//输出班级平均分
}
PrintAverScore.java
public class PrintAverScore {
	void showScore(AverScore averScore, double [] score) {
		averScore.averageScore(score);//调用实现接口的类的方法,输出平均分
	}//第一个参数是实现接口的类的对象,第二个参数是存储分数的数组

	public static void main(String[] args) {
		double classScore[] = {99, 70, 88.3, 93.6, 100};//班级学生分数
		double gymnasticsScore[] = {88.3, 97, 77, 90, 96.5};//体操选手分数

		PrintAverScore printAverScore = new PrintAverScore();

		printAverScore.showScore(new ClassScore(), classScore);
		//输出班级学生平均分
		printAverScore.showScore(new GymnasticsScore(), gymnasticsScore);
		//输出体操选手平均分
	}
}

2. 运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42250302/article/details/88971304