簡體   English   中英

如何創建2D數組的ArrayList

[英]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)檢索第一個元素,您將獲得一個二維整數數組。 如果將這些東西打印出來,它們會產生與您所得到的相似的東西。 如果您想要數組元素,您將

  1. 檢索數組元素(就像您一樣)
  2. 檢索數組的元素

如建議的那樣,您可能要使用(從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM