java打分程序设计接口

九个评委打分,百分制,保留小数点后一位。设计一个接口完成两种打分方法 1.去最高和最低分2.不去最高和最低分

采纳一下吧,答案我发你

img

img


public static void main(String[] args)(){
    List<Double> scoreList = new ArrayList<>(9);
    Scanner scan = new Scanner(System.in);//键盘输入
        
    for (int i = 0; i < scoreList.size(); i++) {
        scoreList.add(scan.nextInt());
    }
    Collections.sort(scoreList);
    //方法一,不去最高分和最低分
    unDeleteMaxAndMin(scoreList);
    
    //方法二,去掉最高分和最低分
    deleteMaxAndMin(scoreList);
    
}


//去掉最高分和最低分
public List<Double> deleteMaxAndMin(List<Double> list){
    list = list.subList(1,list.size()-1);
    for (int i = 0; i < list.size(); i++) {
        System.out.println("从小到大:" + list.get(i));
    }
    return list;
}

//不去掉最高分和最低分
public List<Double> unDeleteMaxAndMin(List<Double> list){
    for (int i = 0; i < list.size(); i++) {
        System.out.println("从小到大:" + list.get(i));
    }
    return list;
}

img


public static void main(String[] args) {
        //定义评委数量
        int num = 9;
        Scanner scan = new Scanner(System.in);

        //采集计算平均分方式
        System.out.println("请选择打分方式(1为去掉最高分和最低分,2为不去掉)");
        int isRemove;
        while (true){
            String isRemoveStr = scan.next();
            if("1".equals(isRemoveStr)||"2".equals(isRemoveStr)){
                isRemove = Integer.valueOf(isRemoveStr);
                break;
            }
            System.out.println("请选择打分方式(1为去掉最高分和最低分,2为不去掉)");
        }

        //采集评委打分
        System.out.println("请"+num+"位评委依次打分(0.0~100.0),每位评委打分后按回车");
        BigDecimal min = new BigDecimal("0.0");
        BigDecimal max = new BigDecimal("100.0");
        List<BigDecimal> fractions = new ArrayList<>();
        for (int i = 0;i<num;i++){
            BigDecimal fraction;
            while (true){
                System.out.print("请"+(i+1)+"号评委打分:");
                try {
                    String fractionStr = scan.next();
                    fraction = new BigDecimal(fractionStr);
                    fraction = fraction.setScale(1, RoundingMode.DOWN);
                } catch (NumberFormatException e) {
                    System.out.println("请输入正确的分数(0.0~100.0),打分后按回车");
                    continue;
                }
                if(fraction.compareTo(max)>0||fraction.compareTo(min)<0){
                    System.out.println("请输入正确的分数(0.0~100.0),打分后按回车");
                    continue;
                }

                fractions.add(fraction);
                break;
            }
        }
        System.out.println(num+"位评委打分如下:"+fractions.toString());

        //计算总分
        BigDecimal sum = BigDecimal.ZERO;
        for(BigDecimal item: fractions){
            sum = sum.add(item);
        }
        System.out.println("总分:"+sum);
        BigDecimal avg;
        if(isRemove == 1){
            BigDecimal max1 = Collections.max(fractions);
            BigDecimal min1 = Collections.min(fractions);
            System.out.println("去掉最高分:"+max1);
            System.out.println("去掉最低分:"+min1);
            avg = sum.subtract(max1).subtract(min1).divide(BigDecimal.valueOf(num - 2),1,RoundingMode.DOWN);
        }else{
            avg = sum.divide(BigDecimal.valueOf(num),1,RoundingMode.DOWN);
        }
        System.out.println("平均分:"+avg);
    }