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

Java实现从scores.txt读取并打印前5名最优游戏成绩

解决读取并输出前5最优成绩的方案

嘿,这个需求其实很好实现!咱们的目标是从scores.txt里读出所有剩余牌数,找出最小的5个(毕竟剩的越少成绩越好嘛),然后打印出来。我给你写一段可以直接整合到你DeckOfCards类里的代码,附带详细注释,你一看就懂:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;

public class DeckOfCards {
    // 你已有的DeckOfCards类代码...

    /**
     * 读取scores.txt并打印前5名最优成绩(剩余牌数最少的5个)
     */
    public static void printTop5Scores() {
        String scoreFilePath = "scores.txt";
        
        // 使用try-with-resources自动关闭文件流,避免资源泄漏
        try (BufferedReader reader = new BufferedReader(new FileReader(scoreFilePath))) {
            // 读取文件中的成绩行(假设所有成绩以逗号分隔存于一行)
            String scoreLine = reader.readLine();
            
            // 处理文件为空的情况
            if (scoreLine == null || scoreLine.trim().isEmpty()) {
                System.out.println("目前还没有任何游戏成绩记录哦!");
                return;
            }

            // 分割字符串为单个成绩的字符串数组,同时去除每个元素的多余空格
            String[] scoreStrArray = scoreLine.split(",");
            int[] scores = new int[scoreStrArray.length];

            // 将字符串数组转换为整数数组
            for (int i = 0; i < scoreStrArray.length; i++) {
                scores[i] = Integer.parseInt(scoreStrArray[i].trim());
            }

            // 对成绩数组进行升序排序(最小的成绩会排在最前面)
            Arrays.sort(scores);

            // 确定要输出的成绩数量:最多5个,如果总记录不足5个就输出全部
            int displayCount = Math.min(5, scores.length);
            
            System.out.println("当前最优的5个游戏成绩(剩余牌数越少越好):");
            for (int i = 0; i < displayCount; i++) {
                // 格式化输出,最后一个元素后不加逗号
                System.out.print(scores[i] + (i == displayCount - 1 ? "" : ", "));
            }
            System.out.println();

        } catch (IOException e) {
            // 处理文件读取异常
            System.err.println("读取成绩文件时发生错误:" + e.getMessage());
        } catch (NumberFormatException e) {
            // 处理文件中存在非数字的无效数据
            System.err.println("成绩文件中包含无效数据,请检查格式:" + e.getMessage());
        }
    }

    // 你已有的其他类方法...
}

关键细节说明:

  • 资源自动管理:用try-with-resources包裹文件读取流,不用手动关闭,避免IO资源泄漏。
  • 异常处理:覆盖了文件找不到、读取失败,以及文件中有非数字内容的情况,让程序更健壮。
  • 边界情况处理:如果scores.txt里的成绩不足5条,会自动输出所有现有成绩,不会出现数组越界问题。
  • 排序逻辑:通过Arrays.sort()做升序排序,最小的剩余牌数会排在数组最前面,直接取前N个就是最优成绩。

你只需要在游戏结束后或者需要展示成绩的地方调用DeckOfCards.printTop5Scores()就可以啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:05