欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

评委打分案例

程序员文章站 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);
    }
}