//computerAverage.java public interface computerAverage{ public double cA(double[] x);//java8后接口可以有方法体 }
//songGame.java public class songGame implements computerAverage{ public double cA(double[] x){ int count=x.length; double aver=0,temp=0; //冒泡排序从小到大排列 for(int i=0;i<x.length;i++){ for(int j=i;j<x.length;j++){ if(x[j]<x[i]){ temp=x[j]; x[j]=x[i]; x[i]=temp; } } } //去除头尾最低最高分,计算总分 for(int i=1;i<x.length-1;i++){ aver=aver+x[i]; } if(count>2){ aver=aver/(count-2); } else{ aver=0; } return aver; } }
//estimator.java import java.util.*; import java.lang.*; import java.util.Scanner; public class estimator{ void jisuan(){ double score; double[] singers; Scanner sc=new Scanner(System.in); while(true){ System.out.println("请输入打分的人数 "); int number=sc.nextInt(); singers=new double[number]; int i=0; OUTER:while(true){ System.out.println("请输入分数:"); score=sc.nextDouble(); if(score>=0&&i<singers.length){ singers[i]=score; i++; if(i==singers.length) break OUTER; } else System.out.println("请输入有效分数!\n\n\n"); } computerAverage computer=new songGame(); double result=computer.cA(singers); System.out.printf("最终平均分数:%f\n",result); } } public static void main(String args[]){ new estimator().jisuan(); } }
输出:
请输入打分的人数 5 请输入分数: 100 请输入分数: 90 请输入分数: 85 请输入分数: 60 请输入分数: 75 最终平均分数:83.333333
请输入打分的人数 7 请输入分数: 9.89 请输入分数: 9.88 请输入分数: 9.99 请输入分数: 9.12 请输入分数: 9.69 请输入分数: 9.76 请输入分数: 8.97 最终平均分数:9.668000
参考自 《java面向对象程序设计——实验指导与习题解答(张跃平等 著)》