【问题标题】:how to write a conditional telling java that the array index is invalid如何编写一个条件告诉java数组索引无效
【发布时间】:2013-09-21 21:57:32
【问题描述】:

(这是一个填充有对象的二维数组)所以标记为“//Out of Grid”的地方是我不知道如何告诉java它寻找的索引不在网格中并继续前进的地方.

我试图完成的基本概述是遍历每个单元格,开始[0][0] 并检查其所有相邻邻居,至于第一个检查其邻居将是 [0][1]、[1][0] 和 @987654324 @。然后如果索引中对象的年龄为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++;
        }

    }
}

【问题讨论】:

  • 嗯似乎没用
  • 奇怪,什么不工作?
  • 我还应该补充一点,当 i==0 和 j==0 时,您并没有跳过,一个单元格不是它自己的邻居。
  • 是的,我把那部分弄得越界是我需要帮助的地方
  • 你能更新你的代码清单吗?对于某些邻居检查,我有几乎完全相同的代码,并且可以正常使用 continue。

标签: java multidimensional-array conways-game-of-life


【解决方案1】:

除非您想执行某些操作,否则您可以将它们排除在外。

在neighbor_x &lt; 0和neighbor_y &gt;=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++;
        }

     }
}

如果这曾经引发异常,那么只需将条件分开 comme suite

 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 ) 

【讨论】:

  • 如果它的索引不在网格上,我想把它排除在外,只计算 (nCount) 索引。 ,试过这个仍然给出越界异常-1。
  • @user2760010 已修复
猜你喜欢
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2011-07-13
相关资源
最近更新 更多