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

Java读取指定格式TXT文件并填充矩阵的实现疑问

如何读取TXT文件内容并填充到Java矩阵中?

你的TXT文件格式示例:

123
456

你现有的代码已经能根据文件内容创建出正确维度的矩阵(比如示例中2行3列),但缺少填充矩阵内容的逻辑。下面是可行的解决方案,同时优化原代码中重复扫描文件的问题:

优化后的完整代码

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MatrixReader {
    public static int[][] readMatrix(String filePath) throws FileNotFoundException {
        // 用List存储所有行,避免两次扫描文件
        List<String> lines = new ArrayList<>();
        
        // try-with-resources自动关闭Scanner,防止资源泄漏
        try (Scanner sc = new Scanner(new File(filePath))) {
            while (sc.hasNextLine()) {
                String line = sc.nextLine().trim();
                if (!line.isEmpty()) { // 跳过空行,避免维度错误
                    lines.add(line);
                }
            }
        }
        
        if (lines.isEmpty()) {
            return new int[0][0]; // 空文件返回空矩阵
        }
        
        int rows = lines.size();
        int cols = lines.get(0).length();
        int[][] matrix = new int[rows][cols];
        
        // 填充矩阵核心逻辑
        for (int i = 0; i < rows; i++) {
            String line = lines.get(i);
            for (int j = 0; j < cols; j++) {
                // 字符转整数:利用ASCII码差值,'0'的ASCII码为48,减去后得到对应数字
                matrix[i][j] = line.charAt(j) - '0';
            }
        }
        
        return matrix;
    }

    // 测试验证
    public static void main(String[] args) {
        try {
            int[][] matrix = readMatrix("src/User/url.txt");
            // 打印矩阵查看结果
            for (int[] row : matrix) {
                for (int num : row) {
                    System.out.print(num + " ");
                }
                System.out.println();
            }
        } catch (FileNotFoundException e) {
            System.err.println("文件未找到:" + e.getMessage());
        }
    }
}

关键逻辑说明

  • 避免重复扫描:原代码先扫一遍统计行数,再重新读取内容,这里用List<String>一次性存储所有行,提升效率。
  • 字符转数字:通过字符ASCII码差值转换,是Java中字符转单个数字的常用简便方法。
  • 空行处理:跳过文件中的空行,防止因空行导致矩阵维度计算错误。
  • 资源管理:try-with-resources语法自动关闭Scanner,无需手动处理资源释放。

原代码的小问题修正

  • 你定义的URL变量未实际使用,直接用方法参数filePath即可。
  • 文件路径中的反斜杠需用双反斜杠\\转义,或直接使用正斜杠/(Java支持两种路径分隔符)。

内容的提问来源于stack exchange,提问作者Karim Abou El Naga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:41:00