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

如何使用Java Scanner输入数值与用户名,实现仅展示前10名的得分排名功能

排名展示功能实现方案

要求排名格式为 int(分值) - String(用户名),最多输出前10名结果

问题原因

  • 现有代码将分值和用户名存储在两个独立的ArrayList中,无法建立一一对应关系
  • 输入逻辑错误:先读取了一个double类型的组数后直接读取了一个用户名,后续循环仅录入分值,没有对应录入每组的用户名

修复后完整代码

import java.util.*;
import java.util.AbstractMap.SimpleEntry;

public class Methods {
    // 红字体输出常量,如果你原有定义可以直接复用
    private static final String ANSI_RED = "\u001B[31m";
    private static final ArrayList<SimpleEntry<Double, String>> scoreUserList = new ArrayList<>();

    public static void test() {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print(ANSI_RED + "请输入要录入的总组数:");
            // 组数为整数,不要用double类型接收
            int totalCount = scanner.nextInt();
            scanner.nextLine(); // 处理换行符残留问题,避免后续字符串读取出错

            for (int i = 0; i < totalCount; i++) {
                System.out.printf("请输入第%d组的用户名:", i+1);
                String username = scanner.nextLine();
                System.out.printf("请输入第%d组的分值:", i+1);
                double score = scanner.nextDouble();
                scanner.nextLine();
                scoreUserList.add(new SimpleEntry<>(score, username));
            }

            System.out.println("------------");
            System.out.println("排名结果:");
            // 按分值倒序排序,取前10,按要求格式输出
            scoreUserList.stream()
                    .sorted((o1, o2) -> Double.compare(o2.getKey(), o1.getKey()))
                    .limit(10)
                    .toList()
                    .forEach(entry -> System.out.printf("%d - %s%n", entry.getKey().intValue(), entry.getValue()));
            
            // 你原有实现的retry方法保留即可
            // retry();
        }
    }

    public static void main(String[] args) {
        test();
    }
}

核心改动说明

  • 使用SimpleEntry<Double, String>存储分值和用户名的关联数据,避免两个列表错位导致的匹配错误
  • 修正输入逻辑:先读取总组数,循环每组依次录入用户名和分值,处理Scanner换行符残留问题避免输入报错
  • 排序后调用limit(10)实现最多输出前10名的需求
  • 输出时将分值强转为int类型,完全符合要求的格式规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:02