当前,我正在尝试检查网格单元中周围所有单元的数据。上,左,下,右和所有对角线。如何使用异常抛出,这样就不必单独编码边角了?

这是我目前所拥有的。 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

您需要在访问数组之前检查范围;如果您的xy超出范围,请勿访问该数组。

07-24 14:29