[英]How do I initialize a 2D array using the constructor of another class in Java?
我用以下方法实例化了一个二维数组:
public Seating(int rowNum, int colNum) {
Guest[][] seatedGuest = new Guest[rowNum][colNum];
我现在想使用 Guest 类中的 Guest 构造函数初始化数组,但我不确定如何。
有什么建议?
这是引用变量seatedGuest,它在堆栈中。 您必须将对象分配给它将在堆上。
干得好 :)
for(int i=0;i<rowNum;i++){
for(int j=0;j<colNum;j++){
seatedGuest[i][j]=new Guest();
}
}
如果我正确地解释了您的问题,那么既然您声明了数组,那么您想用来宾初始化每个条目。 简单地使用 for 循环并正常初始化每个循环怎么样?
for (int i = 0; i < rowNum; i++) {
for (int j = 0; j < colNum; j++) {
seatedGuest[i][j] = new Guest(/* ... */);
}
}
不过,我不得不说,这有点不寻常。 声明一个数组并立即用Guests填充它似乎很奇怪。
从你的函数的签名中猜测,这是一个名为Seating
的类的构造函数。 显然,您的座位类正在容纳一系列客人来代表就座的人。 这样,正如@ElliottFrisch 在评论中所说,该变量可能应该是一个字段而不是局部变量,因为它是在构造函数完成后(即在构造对象之后)保留的信息。
然后你可以定义另一种方法, seatGuest
也许,它把一个客人放在数组中:
public void seatGuest(Guest guest, int row, int col) {
this.seatedGuest[row][col] = guest;
}
最后一句话:你的变量应该被命名为seatedGuests
而不是seatedGuest
,对吧?
Guest
构造函数适合仅实例化一个实例。 你提议的线路,
Guest[][] seatedGuest = new Guest[rowNum][colNum];
使用二维数组语义创建一个大小为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!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.