java如何将int[]随机化?
我正在用Java制作一个游戏,需要随机排列棋盘的顺序。下面是我正在做的代码:
public static int[] RandomizeArray(int[] array){
Random rgen = new Random();
for (int i=0; i<array.length; i++) {
int randomPosition = rgen.nextInt(array.length);
int temp = array[i];
array[i] = array[randomPosition];
array[randomPosition] = temp;
}
return array;
}
public void startNewGame(){
numTries = 0;
won = false;
board = new int[4][4];
RandomizeArray(board);
for (int row = 0; row < 4; row++){
for (int col = 0; col < 4; col++){
board[row][col] = (row+1) + (4 * col);
}
}
repaint();
}
现在Java告诉我“int[]不能转换为int[][]”,但我不确定为什么。任何帮助都会很好
# 1 楼答案
您的错误是因为您试图传入2D数组而不是1D数组。例如,如果你说
RandomizeArray(board[0]);
,那将是一个有效的论点或者,您可以将
RandomizeArray
方法更改为:注意我的论点中附加的
[]
。如果你走这条路,你需要修改你的随机逻辑此外,即使您成功地调用了
RandomizeArray()
方法,您也在重新排列空白值,然后在以后用新值填充它们,从而破坏了最初的目的以下是我解决这个问题的方法
Collections类有一个内置的shuffle方法。让我们好好利用这一点。下面是一个完整的例子
# 2 楼答案
board
是二维的int[][]
,但RandomizeArray
需要一维的int[]
。您需要更改RandomizeArray
以在二维中工作