如何找出并显示存储得分的数组中拥有相同最高得分的竞争者?
解决数组中重复最高分竞争者的显示问题
你的代码目前只捕获到了第一个最高分对应的竞争者,没把所有得分相同的竞争者都找出来。咱们一步步来修正这个问题:
核心思路
要实现需求,需要分三步走:
- 第一步:先确定数组中的最高分
- 第二步:遍历整个数组,收集所有得分等于最高分的竞争者编号(注意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
相关产品推荐
相关产品推荐

