JAVA基礎--歌手打分功能實現
阿新 • • 發佈:2018-07-11
ext test count mil 最終 int 功能實現 最大值 lean
問題:在歌唱比賽中,共有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基礎--歌手打分功能實現