环绕网格 - 仅 east/west 错误

Wrap Around Grid - errors on east/west only

我有四种方法可以检查给定的网格位置是否紧邻占用位置(值为 1)。假定网格环绕,即,如果在 50x50 grid[0][1] 中给定位置并且 grid[49][1] 被占用,该方法应该 return true/ 我的 checkNorth 和 checkEast方法工作正常,但每次我 运行 程序时,南或西方法都会出现 ArrayIndexOutofBoundsException: -1 错误。我检查了我的数学,我认为它应该有效 - 我是否错误地使用了模数,或者我是否遗漏了其他东西? 编辑:阐明了包装标准,单词使用更正。

boolean checkWest(int indexA, int indexB)
{
    if (indexA-1 > 0)
    {
        if (grid[indexA-1][indexB] == 1)
            {
            return true;
            }
    }
    if (indexA-1 < 0)
        {
        if (grid[(indexA-1)%width][indexB] == 1)
            {return true;}
        else return false;
        }
return false;   
}

我发现了几个问题。首先,Java 数组是零索引的,这意味着第一个元素在索引 0 处。所以当 indexA-1 等于 0 时检查 grid[indexA-1][indexB] 是可以的。第二,你是当 indexA 等于 0 时没有正确处理。这是我的实现。我也稍微简化了逻辑。

boolean checkWest(int indexA, int indexB)
{
    if (indexA > 0) 
        return grid[indexA - 1][indexB] == 1;
    else
        return grid[width + indexA - 2][indexB] == 1;
}

编辑:我很确定我用第二个 return 语句破坏了数学。应该是现在...