【发布时间】:2016-02-06 16:13:12
【问题描述】:
您好,我正在尝试将我的类的对象添加到具有对象属性的 ArrayList 中,但我不断收到空指针 我正在从 txt 文件中读取值,将它们分配给属性,然后将对象放入数组列表中
这是我的代码
public class Users {
Scanner scan;
BufferedReader reader;
MainGui gui;
Login login;
String name;
String surname;
String dob;
String address;
String town;
String number;
String position;
ArrayList<Users> allUsers = new ArrayList<Users>();
public Users(Login login){
this.login = login;
open();
}
public void open(){
try {
URL path = Users.class.getResource("records.txt");
File f = new File(path.getFile());
reader = new BufferedReader(new FileReader(f));
scan = new Scanner(reader);
} catch (FileNotFoundException e) {
System.out.println("File not found");
}
}
public void readRecords(){
open();
while(scan.hasNext()){
Users user = new Users(login);
user.name = scan.next();
user.surname = scan.next();
user.dob = scan.next();
user.address = scan.next();
user.address = addSpace(user.address);
user.town = scan.next();
user.number = scan.next();
user.position = scan.next();
allUsers.add(user);
}
scan.close();
}
public void printUsers(){
readRecords();
for(Users user : allUsers){
System.out.println("" + user );
}
}
}
我已经包含了所有参与其中的方法,以便您更好地帮助我。
【问题讨论】:
-
你的主要方法是什么?
-
抱歉,您的代码一团糟。你想让它做什么?在您的构造函数中,您正在使用
null初始化未使用的局部变量——您是否想改为初始化成员变量?之后,您拨打open()。所以每次你使用new Users()创建一个对象时,你是在打开文件吗?然后在readRecords你又打开了??然后您将scan.next()的结果分配给this,而不是新创建的user对象... -
你需要为你的Users类实现一个toString方法,否则它会像Users@389afb685一样打印
标签: java arraylist java.util.scanner null-pointer