나는 함수를 작성했습니다. 내 의도가 아니지만 문제는 매개 변수가 주 프로그램에서 조작되고 있다는 것입니다. 함수 내부에 값을 넣기를 원하지만, 작동하는 동안 주 프로그램의 실제 값도 변경됩니다.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 자체를 수정하는 것입니다 :
여기 내 코드입니다. 타일 배열의 새로운 인스턴스를 만든 다음 보냈습니다. 우리는 많은 것을 말할 수 없다
CopyTilesArrays (tilesArray, tempTilesArrayToSend);
에서 수행되는 것을 보지 않고
가하셨습니까 " * SwapTilesPositions() * 함수 안에 "? – erickson
'CopyTileArrays()'함수를 게시해야합니다. 첫 번째 인수를 반환하고 두 번째 인수를 버려야합니다. – erickson
아마도'CopyTilesArrays' 함수가 얕은 복사본을 만듭니다. – Jivings