Java 在二维数组中搜索对角线

Java 在二维数组中搜索对角线,java,arrays,Java,Arrays,我试图在2D数组中对角搜索connect four游戏。我以为我已经弄明白了,但显然我错了。第一组for循环工作正常,从右向左、对角搜索。第二组for循环无效。我想我所要做的就是把一些积极的信号转换成消极的信号,这样就行了。最终,通过改变网格高度-1,我能够使它部分工作……但是,我不断地得到绑定错误。在这一点上的任何帮助都将不胜感激。此外,2d阵列的栅格为5x4。所以它真的是连接3 for (int y = 0; y <= GRID_HEIGHT-3; y++) {

我试图在2D数组中对角搜索connect four游戏。我以为我已经弄明白了,但显然我错了。第一组for循环工作正常,从右向左、对角搜索。第二组for循环无效。我想我所要做的就是把一些积极的信号转换成消极的信号,这样就行了。最终,通过改变网格高度-1,我能够使它部分工作……但是,我不断地得到绑定错误。在这一点上的任何帮助都将不胜感激。此外,2d阵列的栅格为5x4。所以它真的是连接3

    for (int y = 0; y <= GRID_HEIGHT-3; y++) {
        for (int x = 0; x <= GRID_WIDTH-3; x++) {
            if (    
                    state[y][x] != Player.NONE && 
                    state[y][x] == state[y+1][x+1] &&
                    state[y+1][x+1] == state[y+2][x+2]
                    ) return state[y][x];
        }
    }
    for (int y = 0; y <= GRID_HEIGHT-3; y++) {
        for (int x = 0; x <= GRID_WIDTH-3; x++) {
            if (    
                    state[y][x] != Player.NONE && 
                    state[y][x] == state[y-1][x-1] &&
                    state[y-1][x-1] == state[y-1][x-2]
                    ) return state[y][x];
        }
    }


    return Player.NONE;

}

for(int y=0;y不是从0迭代到
GRID\u HEIGHT-3
,而是从
GRID\u HEIGHT
向下迭代到3。

对于第二组循环,从索引中减去,这意味着索引可以低于零。需要循环从零开始

for (int y = 2; y < GRID_HEIGHT; y++) {
    for (int x = 2; x < GRID_WIDTH; x++) {
        if (    
                state[y][x] != Player.NONE && 
                state[y][x] == state[y-1][x-1] &&
                state[y-1][x-1] == state[y-2][x-2]
                ) return state[y][x];
    }
}
for(int y=2;y

另外,一般来说,你应该说(x