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

从文本文件填充DefaultTableModel行列匹配异常,求代码错误排查

问题诊断与修复方案

嘿,我一眼就瞅出问题所在啦!你的代码逻辑和输入格式完全不匹配,这就是为啥没法实现需求的原因~

核心错误点

你的输入文本是每行包含单个图书的完整信息(比如一行A B 3.00就是title=A、author=B、price=3.00),但你的代码却把连续三行分别当作一本书的标题、作者、价格——这就好比你要把一个汉堡的面包、肉饼、生菜分开装,但代码却以为三个汉堡的面包、肉饼、生菜分别凑成一个汉堡,完全不对路子!

修复后的代码

我们需要把每行内容拆分成对应的三个字段,而不是攒三行再处理。这里用split("\\s+")来分割(可以处理多个连续空格的情况),然后直接创建图书对象:

BufferedReader infile = new BufferedReader(reader);
String line = "";
try {
    while ((line = infile.readLine()) != null) {
        // 跳过空行,避免异常
        if (line.trim().isEmpty()) {
            continue;
        }
        // 按空格分割每行内容,\\s+匹配任意数量的空白字符
        String[] bookFields = line.split("\\s+");
        // 确保分割后有3个字段,避免格式错误导致的数组越界
        if (bookFields.length == 3) {
            String title = bookFields[0];
            String author = bookFields[1];
            String price = bookFields[2];
            SimpleBook sb = new SimpleBook(title, author, price);
            bookList.add(sb);
        } else {
            // 可选:处理格式错误的行,比如打印日志
            System.err.println("格式错误的行:" + line);
        }
    }
} catch (IOException ex) {
    Logger.getLogger(SimpleBookList.class.getName()).log(Level.SEVERE, null, ex);
}

额外提示

  • 用split("\\s+")而不是split(" "),可以处理输入中可能存在的多个连续空格或者制表符
  • 加上空行判断和字段数量检查,能让代码更健壮,避免因为输入格式小问题就崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:42:33