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

Java如何读取文本文件行内容存入数组 解决BufferedReader空指针报错

错误原因与修复方案

核心报错原因

  • 代码执行顺序错误:你在声明BufferedReader reader = null后,还没完成reader的初始化赋值,就直接调用了reader.readLine()方法,此时reader还是空对象,所以触发空指针异常。
  • 额外逻辑问题:原有循环内的读行逻辑混乱,每次循环多次无意义调用readLine(),会导致数据跳行、赋值错乱。

具体修复步骤

  1. 先完成BufferedReader的初始化,再调用读相关方法
  2. 调整循环逻辑,每轮循环依次读取名、姓各一行,避免重复读行导致数据丢失
  3. 增加数组下标边界判断,避免文件行数超过数组长度时触发越界异常
  4. 补充文件流关闭逻辑,避免资源泄漏

修复后的完整代码

import java.io.*;
public class Test {
    
    static String [] name = new String [3];
    static String [] surname = new String [3];
    
    public static void main(String[] args) {
        BufferedReader reader = null;
        try{
            // 先初始化reader再调用读方法
            reader = new BufferedReader(new FileReader("Names.txt"));
            String currentLine;
            int x=0;
            // 读行同时判断是否为空,同时限制不超过数组长度
            while((currentLine = reader.readLine()) != null && x < name.length){
                // 第一行存为名
                name[x] = currentLine;
                // 第二行存为姓
                surname[x] = reader.readLine();
                x++;
            }
        }
        catch(Exception e){
            System.out.println("The following error occured:" + e.getMessage());
        } finally {
            // 关闭文件流释放资源
            try {
                if(reader != null) reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        for(int x =0; x<name.length; x++){
            System.out.println(
            "name:" + name[x] + "\n"+
            "surname: " + surname[x] +"\n"
            );
        }
    }
}

使用注意

请确保你的Names.txt文件和程序运行路径一致,文件内容每两行为一组,第一行是名、第二行是姓,最多存储3组数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:06