我有四种方法可以检查给定网格位置是否位于占用位置旁边(值为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;
}
答案 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;
}
编辑:我很确定我用第二个返回语句抄袭了数学。它应该是现在......