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

Java如何将TXT文件内容存入二维矩阵并保持原有格式输出

实现方案

1. 问题说明

当前代码已正确完成数据存矩阵的逻辑,输出格式不符合预期的原因是Arrays.deepToString()默认采用带方括号、逗号分隔的格式化规则,只需自定义遍历打印逻辑即可实现目标输出效果。原读取代码存在两处可优化点:

  • 硬编码行列数灵活性差,可适配任意行列数的矩阵文件
  • 原文件读取代码中new FileReader("m")错误把变量名写成了字符串,需要修正

2. 完整实现代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MatrixReader {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Path to file: ");
        String filePath = sc.nextLine();
        sc.close();

        List<int[]> matrixList = new ArrayList<>();
        // 用try-with-resources自动关流,避免资源泄漏
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            // 逐行读取并存入集合,适配任意行列数的矩阵
            while ((line = br.readLine()) != null) {
                // 跳过空行
                if (line.trim().isEmpty()) continue;
                // 适配多个空格分隔的场景
                String[] numStrs = line.trim().split("\\s+");
                int[] row = new int[numStrs.length];
                for (int i = 0; i < numStrs.length; i++) {
                    row[i] = Integer.parseInt(numStrs[i]);
                }
                matrixList.add(row);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // 集合转二维数组,方便后续转置等操作
        int[][] matrix = matrixList.toArray(new int[0][]);

        // 自定义打印,匹配目标输出格式
        System.out.println("matrix");
        for (int[] row : matrix) {
            for (int i = 0; i < row.length; i++) {
                System.out.print(row[i]);
                if (i != row.length - 1) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}

3. 矩阵转置实现(适配后续需求)

后续需要做矩阵转置操作时,可直接基于上述代码得到的matrix二维数组实现,示例如下:

int rows = matrix.length;
int cols = matrix[0].length;
int[][] transposedMatrix = new int[cols][rows];
for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        transposedMatrix[j][i] = matrix[i][j];
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:27:03