我很难找出我的代码有什么问题。我一直忙于阅读NullPointerExceptions的其他主题,并试图通过调试器找到它,我找不到一个好的视频来告诉我如何使用调试器,所以我有点搞不懂。
我正在使用Netbeans,这是从错误输出中取出的:
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方法中。
全班:
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就会出现,对吗?我认为有一个很小的错误,我只是找不到,因为我真的不知道错误信息是想告诉我什么-
我确实删除了标题注释,这样行可能就不准确了。
提前感谢
发布于 2014-08-05 01:20:02
异常显示您的错误位于tibianic.spy.system.FileHandler.addVipToList(FileHandler.java:81)
并且基于您的代码,它将在下面的方法中抛出。
private void addVipToList(String name, String note) {
Vip guy = new Vip(name,note);
vip.add(guy);
}注意你有
public void setVipList(ArrayList<Vip> newList) {
this.vip = newList;
}在调用setVipList()之前,您需要先调用addVipToList(),因为如果不调用addVipToList(),列表vip仍然是null。
发布于 2014-08-05 01:23:25
我想问题是因为你从来没有初始化过数组。
ArrayList<Vip> vip = new ArrayList<Vip>发布于 2014-08-05 01:29:46
我没有打电话给setVipList(),我也不想叫它--还在改变
public class FileHandler {
ArrayList<Vip> vip;至
public class FileHandler {
ArrayList<Vip> vip = new ArrayList<>();解决了这个问题,我就知道这很容易-太尴尬了。
谢谢大家的快速回应。
https://stackoverflow.com/questions/25129873
复制相似问题