1
我有四种方法检查给定网格位置是否在占用位置(值为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.如果Java数组是零索引的,应读取第一个if语句(indexA> = 0)? 2.我知道[width + indexA - 2]是怎么回事,但为什么最好使用模数? –
@ r.ree 1.如果使用'indexA> = 0',那么最终会尝试在索引-1处读取您的网格,因为'0 - 1 == -1'。这会给你一个'ArrayIndexOutofBoundsException'。 2.这可能取决于个人偏好。我认为数学更简单。只要'indexA'永远不会低到'width + indexA - 2'小于0,它应该可以正常工作。 –