跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列 2.請把打最高分的評委和最低分的評委找出來。 3.找出最佳評委
import java.io.*;
/**
* 1.跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列
* 2.請把打最高分的評委和最低分的評委找出來。 3.找出最佳評委和最差評委。最佳評委就是 打分和最後評分最接近。 最差評委就是和最後得分相差最大。
*/
public class Diving_game {
public static void main(String[] args) {
Judge judge=new Judge();
System.out.println("最後的得分為 :"+judge.getLastFen());
System.out.println("最差的評委為第"+(judge.getWorse()+1)+"個");
System.out.println("最好的評委為第"+(judge.getBest()+1)+"個");
}
}
class Judge {
// 定義陣列
float fen[] = null;
int size = 9;
// 建構函式
public Judge() {
fen = new float[size];
// 從鍵盤輸入評委的分數
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
for (int i = 0; i < fen.length; i++) {
System.out.println("請輸入第" + (i + 1) + "評委的評分 :");
fen[i] = Float.parseFloat(br.readLine());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 關閉輸入緩衝流
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 得到運動員的最後評分
public float getLastFen() {
// 1.去掉一個最高分
// 2.去掉一個最低分
// 3.計算平均分
float allFen = 0;
int minIndex = this.getLowFenIndex();// 得到最低分下標
int maxIndex = this.getHighFenIndex();// 到底最高分下標
for (int i = 0; i < fen.length; i++) {
if (i!= minIndex && i!=maxIndex) {
// 得到其餘人的總分
allFen += fen[i];
}
}
// 得到平均分
return allFen/(fen.length-2);
}
// 1.去掉一個最低分(目的是找到最低分的下標)
public int getLowFenIndex() {
// 選擇排序
// 認為第一個的分就是最低的
float minFen = fen[0];
int minIndex = 0;
for (int i = 0; i < fen.length; i++) {
if (minFen > fen[i]) {
// 修改最低分
minFen = fen[i];
minIndex = i;
}
}
//System.out.println("第"+(minIndex+1)+"評委給的分數最低"+" 分數為 :"+ fen[minIndex]);
return minIndex;
}
// 2.去掉一個最高分(目的是找到最高分的陣列的下標)
public int getHighFenIndex() {
// 選擇排序
// 認為第一個的分就是最高的
float maxFen = fen[0];
int maxIndex = 0;
for (int i = 0; i < fen.length; i++) {
if (maxFen < fen[i]) {
// 修改最高分
maxFen = fen[i];
maxIndex = i;
}
}
//System.out.println("第"+(maxIndex+1)+"評委給的分數最高"+" 分數為 :"+ fen[maxIndex]);
return maxIndex;
}
//得到最差的評委
public int getWorse()
{
float lastFen=this.getLastFen();//得到最後的分數
//認為第一個評委最差
int worseIndex=0;//最差的索引為0
float worse=Math.abs(fen[0]-lastFen);//第一個與最後得分的分值差
float fenChaTemp=0f;//第i個與最後得分的分值差
for (int i = 0; i < fen.length; i++)
{
fenChaTemp=Math.abs(fen[i]-lastFen);
if (fenChaTemp>worse)
{
//他就是最差的
fenChaTemp=worse;
worseIndex=i;
}
}
return worseIndex;
}
//得到最好的評委
public int getBest()
{
float lastFen=this.getLastFen();//得到最後的分數
//認為第一個評委最好
int bestIndex=0;//最好的索引為0
float best=Math.abs(fen[0]-lastFen);//第一個與最後得分的分值差
float fenChaTemp=0f;//第i個與最後得分的分值差
for (int i = 0; i < fen.length; i++)
{
fenChaTemp=Math.abs(fen[i]-lastFen);
if (fenChaTemp<best)
{
//他就是最好的
fenChaTemp=best;
bestIndex=i;
}
}
return bestIndex;
}
}