环绕网格 - 仅在东/西方出现错误

时间:2015-09-12 01:42:59

标签: java indexoutofboundsexception modulus

我有四种方法可以检查给定网格位置是否位于占用位置旁边(值为1)。假设网格环绕,即,如果在50x50网格[0] [1]中是给定位置并且网格[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;   
}

1 个答案:

答案 0 :(得分:0)

我看到了几个问题。首先,Java数组是零索引的,这意味着第一个元素位于索引0.所以当grid[indexA-1][indexB]等于0时检查indexA-1是可以的。其次,你&#39 ;当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;
}

编辑:我很确定我用第二个返回语句抄袭了数学。它应该是现在......