我有四种方法来检查给定的网格位置是否在占用位置(值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语句屠杀了数学。现在应该...