나는 매우 혼란스러운 문제를 겪었습니다. 내가 만들고있는이 작은 게임을위한 "덩어리"시스템을 만들기 위해 노력하고 있습니다. 지금 당장하고 싶은 것은 무한대의 먼지 블록을 생성하는 것입니다. 그것은 지금 작동하지만, 난 단지 열 및 흙의 인덱스를 저장하는 2 차원 배열을 사용하고 있습니다. 실제 코드는 다음과 같습니다.2D 배열의 ArrayList를 만드는 방법
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));
을 사용하려고 할 때, 그것은 반환 [[[email protected]
. 분명히 이것은 내가 원하는 것 ... 내가 뭘 잘못하고있는 걸까요? 도움을 주셔서 감사합니다. ~ 패킷 수신 (나는 명확하지 않고 아무것도 설명하면, 나에게 알려주세요!)
Object의 toString() 메소드를 사용하여 인쇄합니다. java.util.Arrays 패키지에서 아마 Arrays.toString (chunkHolder.get (0)) 메소드를 사용할 수 있습니다.하지만 2D 배열에서는 사용하지 않았습니다. 이 게시물을 확인하십시오 : http://stackoverflow.com/questions/409784/simplest-way-to-print-an-array-in-java –
'int [] [] firstChunk = chunkHolder.get (0);'지금 평소대로'firstChunk'와 상호 작용할 수 있습니다. 'System.out.println (firstChunk [0] [0]); '을 시도해보십시오. 또한,'blockGrid'를 초기화 한 후에 그것을 인쇄 해보면 왜 그 표현을 얻는 지 알게 될 것입니다 - 그것이 배열을 인쇄하는 것처럼 보입니다. – 2rs2ts