体操运动员参加自由体操决赛,有10个评委为他们打分。选手的成绩计算方法是:10个评委分数中,去掉一个最高分和一个最低分,余下分数的平均值为选手的最后得分。

本文介绍了一个体操比赛评分系统的实现方法。系统通过去除最高和最低分来计算每位参赛者的平均得分,并据此进行排名。适用于20位选手的比赛,展示了完整的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

体操运动员参加自由体操决赛,有10个评委为他们打分。选手的成绩计算方法是:10个评委分数中,去掉一个最高分和一个最低分,余下分数的平均值为选手的最后得分。假设有20名选手。

要求,计算出每个选手的成绩,并给出名次,输出格式如下:

       名次    姓名    评委成绩1绩 (10个成绩依次列出)  最终得分

代码:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Athletes[] athletes = new Athletes[20];
        String name;
        //录入运动员成绩
        for (int i = 0; i < athletes.length; i++) {
            double[] scores = new double[10];
            System.out.println("请输入第" + (i+1) + "名运动员信息:");
            System.out.println("请输入姓名:");
            name = sc.next();
            System.out.println("请输入10个评委的成绩:");
            for (int j = 0; j < 10; j++) {
                scores[j] = sc.nextDouble();
            }
            Athletes athletes1 = new Athletes(name,scores);
            athletes1.setScore();
            athletes[i] = athletes1;
        }
        //排名
        for (int i = 0; i < athletes.length - 1; i++) {
            for (int j = 1; j < athletes.length-i; j++) {
                if (athletes[j].getScore()>athletes[j-1].getScore()){
                    Athletes temp = athletes[j];
                    athletes[j] = athletes[j-1];
                    athletes[j-1] = temp;
                }
            }
        }
        //录入排名结果
        for (int i = 0; i < athletes.length; i++) {
            athletes[i].setRank(i+1);
        }
        //输出
        for (int i = 0; i < athletes.length; i++) {
            athletes[i].print();
        }
    }
}

class Athletes{
    private String name;
    private int rank;
    private double[] scores;
    private double score;

    private double[] afterSortScore;

    public Athletes() {
    }

    public Athletes(String name, double[] scores) {
        this.name = name;
        this.scores = scores;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public double[] getScores() {
        return scores;
    }

    public void setScores(double[] scores) {
        this.scores = scores;
    }

    public double getScore() {
        return score;
    }

    public void setScore() {
        double max = scores[0];
        double min = scores[0];
        for (int i = 1; i < scores.length; i++) {
            if (scores[i]>max)max = scores[i];
            if(scores[i]<min)min = scores[i];
        }
        double sum = 0;
        for (int i = 1; i < scores.length - 1; i++) {
            sum+=scores[i];
        }
        sum = sum - max -min;
        this.score = sum/8;
    }

    public void print(){
        System.out.print("名次:" + rank + " 姓名:" + name + " 成绩:");
        for (int i = 0; i < scores.length; i++) {
            System.out.print(scores[i] + " ");
        }
        System.out.println("最终得分:" + score);

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值