当前,我正在尝试检查网格单元中周围所有单元的数据。上,左,下,右和所有对角线。如何使用异常抛出,这样就不必单独编码边角了?
这是我目前所拥有的。 isIsAlive()只是检查该单元格是否为“活动”。一个单元的邻居包括它周围的所有活动单元。
public void calcNeighbors() throws ArrayIndexOutOfBoundsException{
int x =0;
int y =0;
int neighbors = 0;
while(x < 9){
while(y < 9){
if(generation[x+1][y+1].isIsAlive()){
neighbors++;
}
if(generation[x+1][y].isIsAlive()){
neighbors++;
}
if(generation[x+1][y-1].isIsAlive()){
neighbors++;
}
if(generation[x][y-1].isIsAlive()){
neighbors++;
}
if(generation[x-1][y-1].isIsAlive()){
neighbors++;
}
if(generation[x-1][y].isIsAlive()){
neighbors++;
}
if(generation[x-1][y+1].isIsAlive()){
neighbors++;
}
if(generation[x][y+1].isIsAlive()){
neighbors++;
}
y++;
}
x++;
neighbors = 0;
}
}
最佳答案
如果假设的邻居超出范围,则不应抛出自己的异常。 Java仍会抛出ArrayIndexOutOfBoundsException
。
您需要在访问数组之前检查范围;如果您的x
或y
超出范围,请勿访问该数组。