[英]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.