Java 计算二维数组中元素周围的非空元素数,并将该数指定给该位置的元素

Java 计算二维数组中元素周围的非空元素数,并将该数指定给该位置的元素,java,arrays,Java,Arrays,这是代码的一部分,我想分配网格中元素周围出现的“X”的数量。例如,如果网格[2][2]上的元素周围有3个“X”,则程序将计算X的数量并将该值分配给计数器1,我将存储这些值以供进一步使用。我正在计算不在边中的值,因此I>0&J>0。由于索引超出范围,我收到一个错误 请帮助我,我是一个新手程序员,所以如果我犯了一个愚蠢的错误,请原谅我 多谢各位 int counter1 = 0; for(int i = 0;i<grid.length;i++){ for (int j = 0;j<

这是代码的一部分,我想分配网格中元素周围出现的“X”的数量。例如,如果网格[2][2]上的元素周围有3个“X”,则程序将计算X的数量并将该值分配给计数器1,我将存储这些值以供进一步使用。我正在计算不在边中的值,因此I>0&J>0。由于索引超出范围,我收到一个错误

请帮助我,我是一个新手程序员,所以如果我犯了一个愚蠢的错误,请原谅我

多谢各位

int counter1 = 0;   
for(int i = 0;i<grid.length;i++){
 for (int j = 0;j<grid.length;j++){      
  //checking if it is not in the edge of grid and it doesnot contain "X"   
  if (grid[i][j] != "X" && i >0 && j>0) {
    for(int x = i-1; x <= i+1;x++){
     for (int y = j-1;y <= j+1;y++){
      if (grid[x][y] == "X")
        counter1++;
     }
    }
    //Calculating the number of X's around the element in array and assigning 
    //that value to string in that place
    System.out.println("Counter1 = "+ counter1);
    grid[i][j] = String.valueOf(counter1);
    counter1 = 0;
  }              
 }
}
int计数器1=0;
对于(int i=0;i0){

对于(int x=i-1;x)将“if(grid[i][j]!=”x“&&i>0&&j>0”更改为“if(i>0&&j>0&&grid[i][j]!=”x“)。原因在检查i和j的值之前,您正在尝试访问网格。因此,将索引抛出异常。更改检查顺序不会更改任何内容异常仍然存在…找出抛出异常的语句。放置try-catch块并打印错误