问题描述
所以我目前正在做某事,但遇到了以下问题:
我有一个班级“人”,其姓名,年龄,性别均如此。 我也有一个类“ 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");
但是,当我这样做时,它给了我以下例外:
线程“主”中的异常java.lang.NullPointerException
所以在我看来,好像没有正确创建数组。 我的错在哪里
(我知道这很奇怪,但是以后的工作需要二维数组)
1楼
问题是您实例化了数组,但没有实例化单个对象。
在执行操作之前, persons[X][Y].setName(name);
你应该做这个:
persons[X][Y] = new person();
另外,您应该考虑重命名变量和类以遵循约定。