从文本文件填充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
相关产品推荐
相关产品推荐

