我有四种方法来检查给定的网格位置是否在占用位置(值1)的旁边。假定网格是环绕的,即,如果在50x50的网格中给定的位置是grid [0] [1]并且grid [49] [1]被占用,则该方法应返回true / My 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。因此,当grid[indexA-1][indexB]等于0时检查indexA-1是可以的。第二,当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语句屠杀了数学。现在应该...

09-05 16:20