Java算法(六)
评委打分
需求:
在编程竞赛中,有 6 个评委为参赛选手打分,分数为 0 - 100 的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的 4个评委的平均值。
- 注意程序的节流
package com.liujintao.judge;
import java.util.Scanner;
public class JudgeScore {
public static void main(String[] args) {
double result = handleScore();
System.out.println("去掉最高分和最低分,最终得分为;" + result);
}
/**
* 获取评委打分的功能方法
*/
public static double handleScore () {
Scanner sc = new Scanner(System.in);
int[] arr = new int[6];
// 1、 获取分数
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入分数:");
int score = sc.nextInt();
// 判断数据是否合理
if (score >= 0 && score <= 100) {
arr[i] = score;
} else {
System.out.println("您输入的分数不合理, 请检查!");
i--;
}
}
// 1、调用max方法
int max = handleMax(arr);
// 2、调用min方法
int min = handleMin(arr);
// 3、最终将平均值返回出去
return getAverage(arr, max, min);
}
/**
* 求和的方法
* @param arr
* @param max
* @param min
* @return
*/
private static double getAverage(int[] arr, int max, int min) {
int sum = 0;
double average = 0;
// 遍历求和
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
sum = sum - max - min;
average = (double)sum / (arr.length - 2);
return average;
}
/**
* 求最大值方法
* @param arr
* @return
*/
public static int handleMax (int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
return max;
}
/**
* 求最小值方法
*/
public static int handleMin (int[] arr) {
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (min > arr[i]) {
min = arr[i];
}
}
return min;
}
}
- 反复观看我的方法调用。并不是固定唯一的,但是节流是一定要有的。
运行示例