获取2D阵列中的相邻像元

时间:2018-10-09 07:28:47

标签: java arrays multidimensional-array

我正在尝试编写一种方法来获取2D数组中的四个相邻单元格。到目前为止,我的方法已经能够做到这一点,并且它可以解决沿边缘延伸或位于角部的单元。问题是,当数组的行和列不相等时,它将失败。例如。数组4x4可以正常工作,但4x5不能正常工作。

一个例子,说我试图找到这个5x6数组的邻居。沿右边缘的任何单元格都不会返回所有邻居。

 123456
0
1     x
2      
3
4
5

cell (1,6) returns only one neighbor, (1,5)
cell (5,6) returns nothing

我的代码-

public static List<int[]> getNeighbors(int x, int y, int maxX, int maxY) {
    List<int[]> neighbors = new ArrayList<int[]>();
    if (x > 0) {
        int[] neighbour = {x-1, y};
        if (neighbour[0] < maxX && neighbour[0] >= 0 && neighbour[1] < maxY && neighbour[1] >= 0) {
            neighbors.add(neighbour);
        }
    }
    if (y > 0) {
        int[] neighbour = {x, y-1};
        if (neighbour[0] < maxX && neighbour[0] >= 0 && neighbour[1] < maxY && neighbour[1] >= 0) {
            neighbors.add(neighbour);
        }
    }
    if (x < maxX) {
        int[] neighbour = {x+1, y};
        if (neighbour[0] < maxX && neighbour[0] >= 0 && neighbour[1] < maxY && neighbour[1] >= 0) {
            neighbors.add(neighbour);
        }
    }
    if (x < maxY) {
        int[] neighbour = {x, y+1};
        if (neighbour[0] < maxX && neighbour[0] >= 0 && neighbour[1] < maxY && neighbour[1] >= 0) {
            neighbors.add(neighbour);
        }
    }
    return neighbors;
}

有人知道如何修改我的代码以解决此问题吗?

0 个答案:

没有答案