1. 程式人生 > >跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列 2.請把打最高分的評委和最低分的評委找出來。 3.找出最佳評委

跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列 2.請把打最高分的評委和最低分的評委找出來。 3.找出最佳評委

package com.my;


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;
}
}

相關推薦

跳水比賽,8個評委打分。運動員成績8個成績去掉一個最高分, 去掉一個最低分,剩下6個分數平均分就是最後得分。 使用維陣列 2.請把打最高分評委最低分評委找出來 3.找出最佳評委

package com.my; import java.io.*; /**  * 1.跳水比賽,8個評委打分。運動員的成績是8個成績去掉一個最高分, 去掉一個最低分,剩下的6個分數的平均分就是最後得分。 使用一維陣列  * 2.請把打最高分的評委和最低分的評委找出來。 3.

劍指off:在一個二維陣列中(每個維陣列的長度相同)每一行都按照從左到右遞增的順序排序列都按照從上到下遞增的順序排序請完成一個函式輸入這樣一個二維陣列和一個整數判斷陣列中是否含有該整數

題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 思路: 從左下角x開始尋找,x為此列最大數字,此行最小數字。如果目

C語言程式設計基礎— 陣列 (程式設計實現從鍵盤輸入20整數統計非負數個數並計算非負數之和

程式設計基礎—一維陣列 (程式設計實現從鍵盤輸入20個整數,統計非負數個數,並計算非負數之和。) #include<stdio.h> int main() { int a[20] ; int k=0,sum=0,i; for (i=0;i<20

·在一個二維陣列中(每個維陣列的長度相同)每一行都按照從左到右遞增的順序排序列都按照從上到下遞增的順序排序請完成一個函式輸入這樣的一個二維陣列和一個整數判斷陣列中是否含有該整數

題目 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 分析 例如這樣一個數列:   要在裡面查詢是否存在7。按照平常的思維

Java程式設計:定義一個int型的陣列包含10元素分別賦一些隨機整數然後求所有元素的最大值最小值平均值並輸出出來

public class Program1 {/**1.定義一個int型的一維陣列,包含10個元素,分別賦一些隨機整數,然後求出所有元素的最大值,最小值,平均值,和值,並輸出出來。*/public static void main(String[] args) { int[

生成一個陣列有10元素都用隨機數填充用指標輪詢的辦法實現函式查詢個數是否存在

題目:生成一個一維陣列,有10個元素,都用隨機數填充,用指標輪詢的辦法實現函式查詢一個數是否存在,具體實現程式碼如下: #include <stdlib.h> #include <stdio.h> #include <time.h&g

設計一個演算法,將陣列A(下標從1開始)中的元素迴圈右移k位要求只用一個元素大小的附加儲存空間演算法的時間複雜度

程式碼 #include<stdio.h> #include<stdlib.h> #define n 10 int main() { int a[n] = { 0,1,2,3,4,5,6,7,8,9 }; int k, t=0,i,j,m; printf(

c語言 譚浩強 陣列內放10學生成績 全域性變數寫一個函式 最高分最低平均分

一個一維陣列內放10個學生成績,利用全域性變數寫一個函式,當主函式呼叫此函式後,能求出最高分、最低分、平均分。程式:#include<stdio.h>float Max = 0, Min =

C# 向 C++ DLL中傳遞結構體包含二陣列陣列VS2013下測試通過

需求是這樣的: C++中需要結構體如下: PS:使用的是MFC 靜態 DLL工程! // struct HCNetConnectData {//CHAR * HCNetServerIP;//INT    HCNetServerPort;//CHAR * HCNetServe

輸入20實數存放在陣列輸出它們的平均值以及高於平均的數的個數

以下是以C語言解決該問題的程式碼: #include<stdio.h> int main() { int i,n=0; float real[20],average,s

01 背包基礎 - 空間優化 (滾動數組陣列

pac 使用 dp2 -1 col date for png logs 2017-09-03 11:39:16 writer:pprp 以很簡單的一個動態規劃問題為引入: 從左上角到右下角走過的路徑和最大,問你最大為多少? 1、可以想到普通的dp 狀態轉移為: dp[i][

2.Java陣列_陣列陣列的動態初始化與靜態初始化、方法接收/返回/修改陣列、java對陣列的排序/全拷貝/部分拷貝

Java陣列----引用資料型別,必須在使用前先初始化;否則會nullPointerException(執行時異常)。 (引用傳遞:多個棧記憶體指向同一塊堆記憶體) 1.一維陣列初始化 (1)動態初始化(宣告並開闢陣列) 資料型別[] 陣列名稱 = new 資料型別[長度]; 如

java迴圈語句陣列

一、while迴圈和do…while迴圈 whlie(條件語句) { 迴圈體 }//先進行條件語句的判斷,再進行迴圈體 do { 迴圈體 }whlie (條件語句)//先執行一次迴圈後再進行條件語句的判斷 二、break語句和continue語句 1.break語句:

實現將陣列A(下標從1開始)中的元素迴圈右移k位要求只用一個元素大小的輔助空間

#include<stdio.h>main(){ int n,arrary[50],k,temp; printf("請輸入陣列元素個數:\n"); scanf("%d",&n); for(int i=1;i<=n;i++) scanf

陣列將重複的放入二陣列組成新陣列

let a= [1,2,3,4,4,5,5,5];//源資料 let b = [];//目標資料 function fn(data,arr){ for(let i in data){ let add = true; if(arr.length>0){ for(let j in

陣列基礎筆記(宣告定義呼叫)

前言:自己對於一維陣列的宣告、定義、呼叫、賦初始值……一直弄不清楚格式,這一篇來專門整理一下,當作筆記 1. 陣列定義 1.1 定義一個5個元素的整型陣列 int array[5]; (1) int 表示定義的定義的陣列是整型陣列,即陣列空間裡面存放整形變數 (2)

lua中陣列陣列的相互轉換

探究多維陣列與一維陣列的轉換是有實際意義的, 如: 1、給定一個立方體內座標、一個順序,問此座標在立方體內按此順序數,在第幾個; 2、給定一堆物體,按某一順序放在立方體的各座標上,問最後一個會放在何處? 那麼,三維要如何轉為一維陣列呢? 最容易想到的方式:維護一個遞增變數,然後遍歷,