问题描述
所以我目前正在做某事,但遇到了以下问题:
我有一个班级“人”,其姓名,年龄,性别均如此。 我也有一个类“ 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();
 
  另外,您应该考虑重命名变量和类以遵循约定。