当我将二维数组复制到不同的临时数组中时,当我对临时数组执行操作时,它会更改我的原始数组。
这是我的代码的一部分,以说明我的意思:
public int getPossibleMoves(int color, int turn) {
int x = 0;
int blankI;
blankI = -1;
int pBoard[][];
pBoard = new int[board.length][board.length];
System.arraycopy(board, 0, pBoard, 0, board.length);
//if its the first turn and color is black, then there are four possible moves
if(turn == 0 && color == BLACK) {
pBoard[0][0] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[pBoard.length-1][pBoard.length-1] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[pBoard.length/2][pBoard.length/2] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[(pBoard.length/2)-1][(pBoard.length/2)-1] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
}
在上面所说pBoard[0][0] = BLANK;
的和类似的行上,它也改变了电路板pBoard
,我需要电路板保持不变,我的程序才能正常工作。
我找到了与此类似的答案,这就是我想到使用System.arraycopy()
而不是pBoard = board
. 在System.arraycopy()
我使用它的另一个程序中工作,但不是在这个程序中。
任何帮助是极大的赞赏。
还有一件事:
这是家庭作业的一部分。然而,解决这个小问题甚至不会让我接近我需要的最终产品。到目前为止,这只是我代码的一小部分,但我需要克服这一点才能继续前进。