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

Java读取txt存入二维char数组报NumberFormatException如何解决?

问题原因与修正方案

错误原因

你当前代码默认迷宫文件前两行分别存储迷宫的行数和列数,尝试将前两行内容转为整数初始化数组,但你提供的maze0.txt没有前置的行列参数,第一行直接是迷宫内容S#####,调用Integer.parseInt()转换非数字字符串时就会抛出java.lang.NumberFormatException异常。

修正方案

分两种适用场景:

场景1:不修改maze0.txt内容,适配现有文件结构

先把所有迷宫行读取到集合中动态计算行列数,再初始化数组,同时用更安全的try-with-resources语法自动管理流资源,修正后代码如下:

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

class SillyMaze{
    static char mazeArr[][];

    public static void main(String[] args){
        File mazeFile = new File("maze0.txt");
        List<String> mazeLines = new ArrayList<>();

        // try-with-resources会自动关闭流,无需手动调用close方法
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(mazeFile))){
            String line;
            // 先读取所有行存入集合
            while ((line = bufferedReader.readLine()) != null){
                mazeLines.add(line);
            }
            // 动态获取行列数
            int rowCount = mazeLines.size();
            int colCount = mazeLines.get(0).length();
            mazeArr = new char[rowCount][colCount];
            // 转存到二维char数组
            for (int i = 0; i < rowCount; i++) {
                mazeArr[i] = mazeLines.get(i).toCharArray();
            }
            // 测试输出验证读取结果
            for (char[] row : mazeArr) {
                System.out.println(row);
            }
        }
        catch (IOException e){ 
            System.err.println("文件读取错误: " + e.getMessage()); 
        } 
    }
}

场景2:允许修改maze0.txt内容

在文件最开头新增两行,分别写入迷宫的行数和列数,你提供的迷宫为6行6列,修改后的maze0.txt内容如下:

6
6
S#####
.....#
#.####
#.####
...#.G
##...#

该场景下原有代码基本可以正常运行,建议补充行列数校验逻辑,避免行数不足导致数组越界。

注意事项

  • 确保迷宫所有行的长度一致,否则可能出现数组维度不匹配问题
  • IO操作优先使用try-with-resources语法管理资源,可避免忘记关流导致的资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:54:05