Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写一个告诉java数组索引无效的条件_Java_Multidimensional Array_Conways Game Of Life - Fatal编程技术网

如何编写一个告诉java数组索引无效的条件

如何编写一个告诉java数组索引无效的条件,java,multidimensional-array,conways-game-of-life,Java,Multidimensional Array,Conways Game Of Life,(这是一个填充了对象的2d数组)因此标记为“//Out-of-Grid”的位置就是我不知道如何告诉java它要查找的索引不在网格中的位置,并且继续前进 对于我试图完成的任务,一个基本的概览是从[0][0]开始检查每个单元格,并检查其所有相邻单元格,因为第一次检查其相邻单元格是[0][1],[1][0],以及[1][1]。然后,如果索引中对象的年龄为0,请执行某些操作 for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1

(这是一个填充了对象的2d数组)因此标记为“//Out-of-Grid”的位置就是我不知道如何告诉java它要查找的索引不在网格中的位置,并且继续前进

对于我试图完成的任务,一个基本的概览是从
[0][0]
开始检查每个单元格,并检查其所有相邻单元格,因为第一次检查其相邻单元格是
[0][1]
[1][0]
,以及
[1][1]
。然后,如果索引中对象的年龄为0,请执行某些操作

for (int i = -1; i <= 1; i++) {
    for (int j = -1; j <= 1; j++) {

        int neighbor_x = x + i;
        int neighbor_y = y + j;

        if (neighbor_x < 0 || neighbor_x >= board.length) {
          // Out of Grid
        }

        if (neighbor_y < 0 || neighbor_y >= board[neighbor_x].length) {
          // Out of Grid
        }

        if (board[neighbor_x][neighbor_y].age == 0) {
            nCount++;
            if (board[x + i][y + j].getPreviousValue() == 0)
                hCount++;
        }

    }
}
for(int i=-1;i=board[neighbor_x].length){
//格格不入
}
如果(电路板[neighbor_x][neighbor_y]。年龄==0){
nCount++;
如果(板[x+i][y+j].getPreviousValue()==0)
hCount++;
}
}
}

除非您想执行某些操作,否则您只需将它们省略即可

当运行第二条语句时,如果
邻居\u x<0
邻居\u y>=0
,则会发生越界异常,第一个条件得到验证,第二个条件抛出异常。您可以简单地使用唯一重要的条件

for (int i = -1; i <= 1; i++) {
    for (int j = -1; j <= 1; j++) {

        int neighbor_x = x + i;
        int neighbor_y = y + j;

        if ((neighbor_x >=0 && neighbor_x < board.length) && 
             (neighbor_y >= 0 && neighbor_y < board[neighbor_x].length) &&
             board[neighbor_x][neighbor_y].age == 0 ) {
            nCount++;
            if (board[x + i][y + j].getPreviousValue() == 0)
            hCount++;
        }

     }
}
for(int i=-1;i=0&&neighbor\u y
如果这会引发异常,那么只需将条件comme套件分开即可

 if ( neighbor_x >=0 && neighbor_x < board.length )
         if(neighbor_y >= 0 && neighbor_y < board[neighbor_x].length)
                 if(board[neighbor_x][neighbor_y].age == 0 ) 
if(neighbor_x>=0&&neighbor_x=0&&neighbor_y
hmm似乎没有工作dd,什么不起作用?我还应该补充一点,当I==0和j==0时,你没有跳过,一个单元格不是它自己的邻居。是的,我得到了超出范围的部分,我需要帮助。你能更新你的代码列表吗?对于某些邻居检查,我有几乎完全相同的代码,它可以与continue一起工作。如果索引不在网格中,我想将其忽略,只计算(nCount)在网格中的索引,已尝试此操作,但仍会出现越界异常-1。@user2760010已修复此问题