You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出并显示存储得分的数组中拥有相同最高得分的竞争者?

解决数组中重复最高分竞争者的显示问题

你的代码目前只捕获到了第一个最高分对应的竞争者,没把所有得分相同的竞争者都找出来。咱们一步步来修正这个问题:

核心思路

要实现需求,需要分三步走:

  • 第一步:先确定数组中的最高分
  • 第二步:遍历整个数组,收集所有得分等于最高分的竞争者编号(注意Java数组索引从0开始,竞争者编号通常是索引+1)
  • 最后把收集到的竞争者编号拼接成符合要求的字符串输出

修正后的完整代码

public class CompetitorScore {
    public static void main(String[] args) {
        int[] newarray = {4, 6, 2, 7, 7, 2, 7}; // 你的得分数组
        Compare_competitor(newarray);
    }

    public static void Compare_competitor(int[] newarray) {
        // 1. 找出数组中的最高分
        int maxScore = newarray[0];
        for (int score : newarray) {
            if (score > maxScore) {
                maxScore = score;
            }
        }

        // 2. 收集所有得分等于最高分的竞争者编号
        StringBuilder competitorStr = new StringBuilder();
        for (int i = 0; i < newarray.length; i++) {
            if (newarray[i] == maxScore) {
                if (competitorStr.length() > 0) {
                    competitorStr.append("、"); // 已有元素时添加分隔符,避免多余符号
                }
                competitorStr.append("竞争者").append(i + 1); // 索引+1转换为竞争者编号
            }
        }

        // 3. 输出最终结果
        System.out.println(competitorStr + "为最高分获得者,得分" + maxScore);
    }
}

代码细节解释

  • 找最高分:先把数组第一个元素设为初始最高分,再遍历数组更新最大值,确保拿到的是数组中的真实最高分。
  • 收集竞争者:用StringBuilder拼接字符串比直接用+更高效,遍历数组时每遇到等于最高分的元素,就把对应的竞争者编号(索引+1)加入,同时处理分隔符逻辑,避免开头或结尾出现多余的顿号。
  • 输出结果:把拼接好的竞争者字符串和最高分组合成符合要求的句子输出。

运行这段代码后,你的数组会输出:竞争者4、竞争者5、竞争者7为最高分获得者,得分7——你例子里写的竞争者4、6、7应该是索引对应关系的笔误,原数组索引4对应的是第5个元素,得分确实是7,所以正确的竞争者编号是4、5、7。如果你的竞争者编号和索引的对应规则不同,只需要调整i+1这部分的逻辑即可。

内容的提问来源于stack exchange,提问作者Souichi Kitai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:40:28