我已通过以下方法实例化了二维数组:
public Seating(int rowNum, int colNum) {
Guest[][] seatedGuest = new Guest[rowNum][colNum];
我现在想使用Guest类中的Guest构造函数初始化数组,但不确定如何。
有什么建议吗?
答案 0 :(得分:0)
这是参考变量seatedGuest,它在堆栈中。 您必须将对象分配给将在堆上的对象。
您在这里:)
for(int i=0;i<rowNum;i++){
for(int j=0;j<colNum;j++){
seatedGuest[i][j]=new Guest();
}
}
答案 1 :(得分:0)
如果我正确解释了您的问题,那么既然您已经声明了数组,则希望使用Guest初始化每个条目。简单地使用for循环并正常地初始化每个循环怎么样?
for (int i = 0; i < rowNum; i++) {
for (int j = 0; j < colNum; j++) {
seatedGuest[i][j] = new Guest(/* ... */);
}
}
不过,我不得不说这有点不寻常。声明一个数组并立即用来宾完全填充它似乎很奇怪。
根据函数的签名进行猜测,该函数是名为Seating
的类的构造函数。显然,您的就座课程吸引了许多宾客来代表人们就座。就像@ElliottFrisch在评论中说的那样,该变量可能应该是字段而不是局部变量,因为它是在构造函数完成后(即在构造对象之后)要保留的信息。
然后,您可能可以定义另一个方法seatGuest
,该方法将来宾放入数组:
public void seatGuest(Guest guest, int row, int col) {
this.seatedGuest[row][col] = guest;
}
最后一句话:您的变量应该命名为seatedGuests
,而不是seatedGuest
,对吧?
答案 2 :(得分:0)
Guest
构造函数仅用于实例化一个实例。您建议的行,
Guest[][] seatedGuest = new Guest[rowNum][colNum];
使用2D数组语义创建大小为rowNum * colNum
的数组。但是,此数组中的每个单独插槽都指向一个null
值-表示它尚未实例化。因此,假设您有一个Guest(args)
构造函数,请遍历新创建的数组以实例化每个值-例如,使用for
循环:
for (int i = 0; i < rowNum; i++) {
for (int j = 0; j < colNum; j++) {
seatedGuest[i][j] = new Guest( <enter your args> );
}
}
在项目中万事如意,欢迎您使用StackOverflow!