[英]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.