标签:java基础 选择 system.in tin void 最小值 ati bsp return
问题:在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。
分析:该题的关键在于,当最高分和最低分多次出现时,如何处理能够使最高分和最低分只去掉一次。可以设置布尔值,让去掉操作只执行一次。
测试方法:
1 public static void test(){ 2 Scanner sc = new Scanner(System.in); 3 System.out.println("表演完毕,请各评委打分:"); 4 int[] a = new int[10]; 5 for(int i=0;i<10;i++){ 6 int score = sc.nextInt(); 7 a[i] = score; 8 } 9 System.out.println("10位评委的评分分别是:"); 10 show(a); 11 int[] b = getScore(a); 12 System.out.println("去掉一个最高分,一个最低分后:"); 13 show(b); 14 getAvg(b); 15 16 }
打印方法:
//遍历数组 public static void show(int[] a){ for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); }
获取最大元素:
//求最大值 public static int getMax(int[] a){ int max = a[0]; for (int i = 0; i < a.length; i++) { if(a[i]>max){ max = a[i]; } } return max; //System.out.println("该数组最大元素为:"+max); }
获取最小元素:
//求最小值 public static int getMin(int[] a){ int min = a[0]; for (int i = 0; i < a.length; i++) { if(a[i]<min){ min = a[i]; } } return min; //System.out.println("该数组最小元素为:"+min); }
得到新的得分数组:
//评分方法 //参数:得分数组 //返回值:去掉最高分和最低分后的数组 public static int[] getScore(int[] a){ int max = getMax(a); int min = getMin(a); int l = a.length-2; int[] b = new int[l]; int count = 0;//计数器 boolean flag1 = true; boolean flag2 = true; for(int i=0;i<a.length;i++){//将原数组的值,选择性的赋给新数组 if(a[i]==max&&flag1==true){ flag1 = false; continue; } if(a[i]==min&&flag2==true){ flag2 = false; continue; } if(count<l){ b[count] = a[i]; count++; } } return b; }
得到最终平均得分:
//求平均数 public static void getAvg(int[] a){ int sum = 0; for (int i = 0; i < a.length; i++) { sum+=a[i]; } int avg = sum/a.length; System.out.println("该选手最终得分:"+avg); }
标签:java基础 选择 system.in tin void 最小值 ati bsp return
原文地址:https://www.cnblogs.com/yhj-notes/p/9293264.html