体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。Gymnastics类和School类都实现了ComputerAverage接口,但是实现的方式不同。
package third;
interface ComputerAverage
{
public double average(double x[]);
}
class School implements ComputerAverage {
public double average(double x[])
{
double aver = 0;
for(double tmp:x)
{
aver+=tmp;
}
aver = aver/x.length;
return aver;
}
}
class Gymnastics implements ComputerAverage {
public double average(double x[]){
double aver = 0;
for(int i =0; i < x.length; i++) {
for(int j = 0; j < x.length; j++) {
if(x[j] > x[i]) {
double temp = x[j];
x[j] = x[i];
x[i] = temp;
}
}
}
for(int i = 1; i < x.length - 1; i++){
aver = aver + x[i];
System.out.println(x[i]);
}
if(x.length > 2)
aver=aver/(x.length - 2);
else
aver=0;
return aver;
// 实现逻辑
}
}
public class Score {
public static void main(String[] args) {
double a[] = {9.89,9.88,9.99,9.12,9.16,9.76,8.97};
double b[] = {89,79,98,95,69,84,78,73,45,67};
ComputerAverage computer;
computer=new Gymnastics();
double result=computer.average(a);
System.out.printf("%n");
System.out.printf("体操选手最后得分:%5.3f\n",result);
computer=new School();
result=computer.average(b);
System.out.printf("班级考试平均分数:%-5.2f",result);
}
}