评委打分案例
程序员文章站
2024-03-16 12:42:34
...
需求
在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
思路分析
- 6个评委就是有6个分数,那么此时我们可以将6个分数存储到一个数组中,然后我们需要获取数组的最大值,再获取数组元素的最小值,然后再获取总分
- 使用总分 - 最大值 - 最小值得到一个数据,然后再除以4就可以了。
上述的功能实现我们也可以将其定义成一个方法
两个明确:
1、返回值类型 ---> 1个int类型
2、参数列表 ---> 1个int类型的数组
代码实现
注:我使用两种方法实现这个案例
import java.util.Arrays;
import java.util.Scanner;
/**
* Created by Intellij IDEA.
*
* @Description: 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
* 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
*/
public class Score {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[6];
for (int i = 0; i < 6; i++) {
System.out.println("请输入第" + i + "个评委打分:");
arr[i] = scanner.nextInt();
}
getAvg01(arr);
//方法二
// getAvg02(arr);
}
/**
* 获取评论分
* 方法一
*
* @param arr 分数的数组
* @return 平均分
*/
private static int getAvg01(int[] arr) {
int max = arr[0];
for (int value : arr) {
max = Math.max(max, value);
}
int min = arr[0];
for (int value : arr) {
min = Math.min(min, value);
}
int sum = 0;
for (int value : arr) {
sum += value;
}
return (sum - max - min) / (arr.length - 2);
}
/**
* 获取评论分
* 方法二
* @param arr 分数数组
* @return 平均分
*/
private static int getAvg02(int[] arr){
//此处使用了sort方法,直接进行排序,也可用冒泡、选择等排序
Arrays.sort(arr);
int sum = 0;
for (int i = 1; i < arr.length - 1; i++) {
sum += arr[i];
}
return sum / (arr.length-2);
}
}