[英]How to Create ArrayList of 2D Arrays
我遇到了一個非常令人困擾的問題。 我正在嘗試為正在制作的這款小游戲創建一個“分塊”系統。 我現在想做的只是生成無限大的污垢塊。 它現在可以工作,但是我只是使用一個二維數組,該數組存儲污垢的列和索引。 這是實際的代碼:
public void generate(){
int newMax = dirtCount + dirtGeneratorChunk;
int oldCount = dirtCount;
for(int i = oldCount;i<newMax;i++){
dirt[dirtCount] = newDirt(spawnDirtX+column*16,
spawnDirtY,16,16,column,columnNumber);
columnNumber ++;
blockGrid[column][columnNumber] = spawnDirtY;
updateBlockGrid(column,(spawnDirtY-spawnDirtTop)/16,spawnDirtY);
dirtX[i] = spawnDirtX+column*16;
dirtY[i] = spawnDirtY;
hasDirt = true;
dirtCount ++;
spawnDirtY += 16;
if(spawnDirtY>500){
column++;
columnNumber = 0;
spawnDirtY = spawnDirtYOriginal;
}
}
repaint();
}
希望這對表明我正在嘗試做的事情有所幫助。 如我所確定,您可以通過代碼看出來,我對Java還是很陌生,可能使用了不良做法/低效的方法。 如果您對我如何改善編程有任何建議,我很想聽聽他們的意見! 回到重點。 這是到目前為止我對ArrayList的了解:
//Construct a new empty ArrayList for type int[][]
ArrayList<int[][]> chunkHolder = new ArrayList<int[][]>();
//Fill ArrayList (index, int[][])
chunkHolder.add(chunkCount, createBlockGrid());
chunkCount ++;
Object[] chunkArray = chunkHolder.toArray();
System.out.println(chunkArray[0]);
public static int[][] createBlockGrid(){
int[][] blockGrid = new int[64][256];
return blockGrid;
}
當我嘗試使用System.out.println(chunkHolder.get(0));
,它返回: [[I@337838
。 顯然,這不是我想要的...我在做什么錯? 謝謝大家的幫助! 〜Guad(如果我解釋不清,請告訴我!)
您的ArrayList
包含int [] []元素,即二維整數數組。 通過使用chunkHolder.get(0)
檢索第一個元素,您將獲得一個二維整數數組。 如果將這些東西打印出來,它們會產生與您所得到的相似的東西。 如果您想要數組元素,您將
如建議的那樣,您可能要使用(從Java 5開始)Arrays.deepToString(arr):
System.out.println(Arrays.deepToString(chunkHolder.get(0)));
否則,您可以遍歷數組以將其打印出來。 例如:
int[][] a = chunkHolder.get(0);
for (int[] b : a) {
for (int c : b) {
System.out.print(c + " ");
}
System.out.println();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.