用方法填充二维数组

时间:2019-02-22 16:17:41

标签: java

所以我目前正在做某事,但遇到了以下问题:

我有一个班级“人”,名字,年龄,性别都在这里。 我也有一个类“ 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

所以在我看来,好像没有正确创建数组。 我的错误在哪里?

(我知道这很奇怪,但是以后需要使用二维数组)

1 个答案:

答案 0 :(得分:3)

问题是您实例化了数组而不是单个对象。在执行persons[X][Y].setName(name);之前,您应该这样做:

persons[X][Y] = new person();

此外,您应该考虑重命名变量和类以遵循约定。