首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取文件、将内容存储到对象、将对象存储在ArrayList中导致java.lang.NullPointerException

问读取文件、将内容存储到对象、将对象存储在ArrayList中导致java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2014-08-05 01:15:48
回答 4查看 171关注 0票数 1

我很难找出我的代码有什么问题。我一直忙于阅读NullPointerExceptions的其他主题,并试图通过调试器找到它,我找不到一个好的视频来告诉我如何使用调试器,所以我有点搞不懂。

我正在使用Netbeans,这是从错误输出中取出的:

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at tibianic.spy.system.FileHandler.addVipToList(FileHandler.java:81)
at tibianic.spy.system.FileHandler.loadVipList(FileHandler.java:65)
at tibianic.spy.system.FileHandler.<init>(FileHandler.java:27)

假设问题位于FileHandler类- loadVipList/addVipToList方法中。

全班:

代码语言:javascript
复制
package spy.system;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author unknown
*/
public class FileHandler {
ArrayList<Vip> vip;

public FileHandler() {
    this.loadVipList();
}

public void setVipList(ArrayList<Vip> newList) {
    this.vip = newList;
}

public ArrayList<Vip> getVipList() {
    return this.vip;
}

public void saveVipList() {
    String line;
    try {
        FileWriter fWriter = new FileWriter("vip.txt");
        BufferedWriter bWriter = new BufferedWriter(fWriter);

        for (Vip v : vip) {
            line = v.getName() + ":" + v.getNote();
            bWriter.write(line);
        }

        bWriter.close();
        fWriter.close();
    } catch (IOException ex) {
        Logger.getLogger(FileHandler.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void loadVipList() {
    String line;
    String[] person;
    try {
        FileReader fReader = new FileReader("vip.txt");
        BufferedReader bReader = new BufferedReader(fReader);

        while ((line = bReader.readLine()) != null) {
            person = line.split(":");
            addVipToList(person[0],person[1]);
        }

        bReader.close();
        fReader.close();

    } catch (FileNotFoundException ex) {
        Logger.getLogger(FileHandler.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(FileHandler.class.getName()).log(Level.SEVERE, null, ex);
    }

}

private void addVipToList(String name, String note) {
    Vip guy = new Vip(name,note);
    vip.add(guy);
}

}

据我理解,当im将值为null的对象赋给方法时,NullPointerException就会出现,对吗?我认为有一个很小的错误,我只是找不到,因为我真的不知道错误信息是想告诉我什么-

我确实删除了标题注释,这样行可能就不准确了。

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-05 01:20:02

异常显示您的错误位于tibianic.spy.system.FileHandler.addVipToList(FileHandler.java:81)

并且基于您的代码,它将在下面的方法中抛出。

代码语言:javascript
复制
private void addVipToList(String name, String note) {
    Vip guy = new Vip(name,note);
    vip.add(guy);
}

注意你有

代码语言:javascript
复制
public void setVipList(ArrayList<Vip> newList) {
    this.vip = newList;
}

在调用setVipList()之前,您需要先调用addVipToList(),因为如果不调用addVipToList(),列表vip仍然是null。

票数 3
EN

Stack Overflow用户

发布于 2014-08-05 01:23:25

我想问题是因为你从来没有初始化过数组。

代码语言:javascript
复制
ArrayList<Vip> vip = new ArrayList<Vip>
票数 0
EN

Stack Overflow用户

发布于 2014-08-05 01:29:46

我没有打电话给setVipList(),我也不想叫它--还在改变

代码语言:javascript
复制
public class FileHandler {
ArrayList<Vip> vip;

至

代码语言:javascript
复制
public class FileHandler {
ArrayList<Vip> vip = new ArrayList<>();

解决了这个问题,我就知道这很容易-太尴尬了。

谢谢大家的快速回应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25129873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档