簡體   English   中英

如何在網格(二維數組)中添加每個元素后的第二個和第三個元素?

[英]How can I add every element with the second and 3rd element after it in a grid (2D array)?

我有一個二維數組,我正在嘗試將元素x水平添加到網格中的兩個下一個元素,同時不超出范圍。

例如,

如果這是我的網格,

[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]

我想要一個 output 數組,看起來像

[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]

因為每個元素都在其后添加了接下來的 2 個元素。

到目前為止,這是我的嘗試:

        int n = 2;
        for (int x = 0; x < array.length; x++ ) {
            for (int y = 0; y < array.length; y++){
                for(int j = x+1; j <= x + n && j < array.length; j++ ){
                l.add(array[x][y] + array[x + j][y]);
            }

但是,當我嘗試運行它時,我得到了一個索引超出范圍的異常。 我試圖更改每個變量的參數但無濟於事。 我應該改變什么?

如果當前索引不是最后一個索引,您可以迭代數組並將當前值與接下來的兩個值相加。

假設您有一個稱為“網格”的二維整數數組,您可以這樣做:

int[][] newGrid = new int[grid.length][grid[0].length];
for (int i = 0; i < grid.length; i++) {
    for (int j = 0; j < grid[0].length; j++) {
        if (j < grid[0].length - 2) {
            newGrid[i][j] = grid[i][j] + grid[i][j + 1] + grid[i][j + 2];
        } else {
            newGrid[i][j] = grid[i][j];
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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