所以我目前正在做某事,但遇到了以下问题:
我有一个班级“人”,名字,年龄,性别都在这里。 我也有一个类“ group”,其参数为groupname,room和person类型的二维数组。所以一切看起来像这样:
public class person{
private String name;
private int age;
private String gender;
public person(){}
public setName(String name){this.name=name;}
public setAge(int age){this.age=age;}
public setGender(String gender){this.gender=gender;}
}
public class group{
private String groupname;
private String room;
private person[][] persons;
public group(int X, int Y){persons = new person[X][Y];}
}
要创建组,必须提供数组的大小。为了填充人员数组,现在有以下功能:
public setPerson(int X, int Y, String name, int age, String gender){
persons[X][Y].setName(name);
persons[X][Y].setAge(age);
persons[X][Y].setGender(gender);
}
现在我使用以下逻辑:
group NewGroup = new group(2,0);
NewGroup.setPerson(0,0,"John",7,"male");
NewGroup.setPerson(1,0,"Paul",9,"male");
NewGroup.setPerson(2,0,"Jen",8,"female");
但是当我这样做时,它给了我以下异常:
线程“ main”中的异常java.lang.NullPointerException
所以在我看来,好像没有正确创建数组。 我的错误在哪里?
(我知道这很奇怪,但是以后需要使用二维数组)
答案 0 :(得分:3)
问题是您实例化了数组而不是单个对象。在执行persons[X][Y].setName(name);
之前,您应该这样做:
persons[X][Y] = new person();
此外,您应该考虑重命名变量和类以遵循约定。