我寫了一個函數。問題是,我發送的參數正在主程序中被操縱,儘管它不是我的意圖。我只想在函數內部有值,但在運行時,主程序中的實際值也正在改變。正在改變Java函數參數值
我該如何預防?
這裏是我的代碼:
Tiles[][] MoveRight(Tiles[][] tilesArray) {
Tiles[][] tempTilesArray = new Tiles[3][3];
Tiles[][] tempTilesArrayToSend = new Tiles[3][3];
tempTilesArrayToSend = CopyTilesArrays(tilesArray, tempTilesArrayToSend);
ArrayIndex zeroPos = FindZero(tilesArray);
Tiles zeroTile = GetTile(zeroPos, tilesArray);
if (zeroPos.column != 2) {
ArrayIndex otherPos = new ArrayIndex(zeroPos.row,
zeroPos.column + 1);
tempTilesArray = SwapTilesPositions(zeroTile, GetTile(otherPos,
tilesArray), tempTilesArrayToSend);
}
return tempTilesArray;
}
我的SwapPositionFunction內發送陣列實際上是修改tilesArray本身。雖然我已經創建了一個tile陣列的新實例,然後發送它。
您是不是要找「 * SwapTilesPositions()*函數「? – erickson 2012-01-31 20:57:40
您應該發佈'CopyTileArrays()'函數。它必須返回它的第一個參數,並放棄第二個參數。 – erickson 2012-01-31 20:59:29
也許'CopyTilesArrays'函數會產生一個淺拷貝? – Jivings 2012-01-31 20:59:48