JAVA小程序--裁判评分系统

来源:互联网 发布:phpcms和帝国cms 编辑:程序博客网 时间:2024/05/16 06:28

实现功能:n个评委打分,运动员的成绩是n个成绩去掉一个最高分和一个最低分,剩下的n-2个分数的平均分就是最后得分。

使用一维数组实现打分功能,并找出打出最高分和最低分的裁判,打分水平最好和最坏的裁判;

详细代码和代码注解如下:

/* * 功能:跳水比赛,评委打分。 * 运动员的成绩是n个成绩去掉一个最高分和一个最低分, * 剩下的n-2个分数的平均分就是最后得分。 * 使用一维数组实现打分功能,并找出打出最高分和最低分的裁判,打分水平最好和最坏的裁判 * 作者:zyj0813 */package com.home1;import java.io.*;public class Home1_1 {public static void main(String[] args) {Judge judge=new Judge();System.out.println(judge.lastFen());//打印裁判时,直接调用类中的最高分和最低分的下标的函数,这里注意的是数组中的下标从0开始,裁判的下标要加1,这里加1一定要和调用的函数括起来。System.out.println("最低分裁判:"+(judge.getLowFenIndex()+1));System.out.println("最高分裁判:"+(judge.getMaxFenIndex()+1));System.out.println("最好打分水平的裁判:"+(judge.getbest()+1));System.out.println("最差打分水平的裁判:"+(judge.getworst()+1));}}//创建一个评分类class Judge{//定义一个可以存放8个数的数组float[] fens=null;int size=4;//构造函数public Judge(){fens=new float[size];//初始化.从键盘输入裁判的打分分数,使用一个Buffer流来输入,下面的try catch抛出异常,避免输入的成绩不是数字。InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);try{for(int i=0;i<fens.length;i++){System.out.println("请输入第"+(i+1)+"裁判的成绩");fens[i]=Float.parseFloat(br.readLine());}}catch(Exception e){e.printStackTrace();}finally{try {br.close();//通过finally来结束数据流,这里也有一个异常要抛出。} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
    }
//得到最好评委public int getbest(){float lastFen=this.lastFen();//先认为第一个评委最好的水平int bestIndex=0;//评委打的分与最后得分分数的差值的绝对值float temp=Math.abs(fens[0]-lastFen);for(int i=1;i<fens.length;i++){if(temp>=Math.abs(fens[i]-lastFen)){bestIndex=i;temp=Math.abs(fens[i]-lastFen);}}return bestIndex;}//得到最差评委public int getworst(){float lastFen=this.lastFen();//先认为第一个评委是最差的水平int worstIndex=0;//评委打的分与最后得分分数的差值的绝对值float cai=Math.abs(fens[0]-lastFen);for(int i=1;i<fens.length;i++){if(cai<=Math.abs(fens[i]-lastFen)){worstIndex=i;cai=Math.abs(fens[i]-lastFen);}}return worstIndex;}
//得到一个运动员的最后得分public float lastFen(){float lastFen=0;float allFen=0;int minIndex=this.getLowFenIndex();int maxIndex=this.getMaxFenIndex();for(int i=0;i<fens.length;i++){if(i!=minIndex&&i!=maxIndex){allFen+=fens[i];}}return allFen/(fens.length-2);}//1、去掉最低分(找到下标)public int getLowFenIndex(){//选择法//认为第一个是最低分float minFen=fens[0];int minIndex=0;for(int i=1;i<fens.length;i++){if(fens[i]<minFen){minFen=fens[i];minIndex=i;}}return minIndex;}//2、去掉最高分(找下标),也代表裁判的下标public int getMaxFenIndex(){//选择法//认为第一个是最低分float maxFen=fens[0];int maxIndex=0;for(int i=1;i<fens.length;i++){if(fens[i]>maxFen){maxFen=fens[i];maxIndex=i;}}return maxIndex;}}