我一直在8益智类,并感到沮丧了一下检查出码。我需要写守则关于左,右,上,下运动。当我删除的权利,该代码提供了一个“索引越界-1”的错误,为双阵列,扩展得到后继节点,并加入他们后。下面是正确的代码,通过迷宫/接班人去,返回孩子家长?有什么不对的代码为左,上,下,右?
当我回到多次试验,我看到的0向右移动的运动,然后放下,当它到达的边缘,所以我不知道,如果下面的代码实际上是运行正确,或者如果有东西在里面需要被改变。
让人不解的需要给的输出:
1 2 3
4 5 6
7 8 0
典型的输出显示:
1 7 8
5 4 2
3 6 0
因此,寻路似乎是错的,我相信这是与下面的移动代码,但我不确定。我的问题是低于准确的代码,确实需要有东西在里面改变?是什么造成了-1的ArrayIndexOutOfBounds与此相关的,或者是其他什么东西?
ArrayList<Node> successors = new ArrayList<Node>();
//generate a successor from moving the 0 to the right
if (col < size-1) {
int[][] right = Board.copyBoard(board);
right[row][col] = right[row][col + 1];
right[row][col+1] = 0;
successors.add(new Node(right));
} else if (col < size - 1) {
int[][] left = Board.copyBoard(board);
left[row][col] = left[row][col-1];
left[row][col-1] = 0;
successors.add(new Node(left));
} else if (row < size-1) {
int[][] down = Board.copyBoard(board);
down[row][col] = down[row + 1][col];
down[row + 1][col] = 0;
successors.add(new Node(down));
} else if (row < size - 1) {
int[][] up = Board.copyBoard(board);
up[row][col] = up[row-1][col];
up[row-1][col] = 0;
successors.add(new Node(up));
}
return successors;
此刻,你的代码检查关口<大小-1左,右移动,同样为向上和向下。第二个条件应该是COL> 0,最后一个行> 0