Я написал функцию, которая. Проблема в том, что параметры, которые я отправляю, управляются в основной программе, хотя это не мое намерение. Я просто хочу иметь значение внутри функции, но во время работы фактическое значение в основной программе также изменяется.Значение параметра функции 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. Хотя я сделал новый экземпляр массива плиток, а затем отправил его.
вы имели в виду " внутри * SwapTilesPositions() * function "? – erickson
Вы должны опубликовать функцию 'CopyTileArrays()'. Он должен был бы вернуть свой первый аргумент и отказаться от своего второго. – erickson
Возможно, функция CopyTilesArrays делает мелкую копию? – Jivings