我遇到了一个非常令人不安的问题。我试图创建一个" chunking"这个小游戏的制作我正在制作。我现在想要做的只是生成无数块污垢块。它现在可以工作,但我只是使用二维数组,它存储列和污垢的索引。这是实际的代码:
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
(如果我不清楚地解释了什么,请告诉我!)
答案 0 :(得分:3)
您的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();
}