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

如何读取文件中的阶梯型矩阵并实现原格式输入输出?

优化Java代码以支持阶梯型矩阵的读取与写入

原代码的核心问题是依赖固定列数的二维数组存储数据,无法适配阶梯型矩阵每行元素数量不同的场景。下面是优化后的完整代码,支持读取任意行、每行元素数量可不同的阶梯型矩阵,并按原格式写入output.txt:

void readAndWriteMtx() throws IOException {
    // 读取input.txt中的阶梯型矩阵
    List<List<Double>> matrix = new ArrayList<>();
    try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
        String line;
        while ((line = br.readLine()) != null) {
            // 处理首尾空白,支持多空格分隔元素
            String[] elements = line.trim().split("\\s+");
            List<Double> row = new ArrayList<>();
            for (String elem : elements) {
                row.add(Double.parseDouble(elem));
            }
            matrix.add(row);
        }
    }

    // 将矩阵按原格式写入output.txt
    try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
        for (List<Double> row : matrix) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < row.size(); i++) {
                sb.append(row.get(i));
                if (i != row.size() - 1) {
                    sb.append(" ");
                }
            }
            bw.write(sb.toString());
            bw.newLine();
        }
    }

    // 控制台输出验证结果
    for (List<Double> row : matrix) {
        System.out.println(row);
    }
}

关键改动说明:

  • 存储结构替换:用List<List<Double>>替代固定维度的Double[][],每个子列表对应矩阵的一行,长度可自由变化,完美适配阶梯型矩阵。
  • 读取逻辑优化:用trim()清理每行首尾空白,\\s+分割元素(兼容多空格分隔场景);只遍历当前行的实际元素数量,彻底避免数组越界问题。
  • 新增写入功能:通过BufferedWriter将矩阵按原格式写入文件,每行元素用空格分隔,保证输入输出格式一致。
  • 资源自动管理:采用try-with-resources语法包裹流操作,无需手动关闭流,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:35:21