Ciao a tutti!
Io ho questo pezzo di codice:
come noterete, faccio una copia dell'array multidimensione filed in oldField, in modo da poter effettuare cambiamenti in field senza perdere informazioni sul suo stato precedente, che nel mio caso servirà a scambiare gli elementi di due celle della matrice.codice:public void move(int iX, int iY) { int[] newI = freeSpace(iX,iY); int[][] oldField = field.clone(); if(newI != null){ field[newI[1]][newI[0]] = oldField[iY][iX]; field[iY][iX] = oldField[newI[1]][newI[0]]; } }
(Se non tenessi una traccia dello stato precedente di field, una volta copiato un elemento nella sua nuova posizione, non saprei più cosa c'era prima in quel posto per poterlo spostare a sua volta).
Ebbene... nonostante questo mio accorgimento... non va.
Eseguendo il debug con eclipse noto che arrivato alla riga
oldField è cambiato anch'esso (ed è precisamente uguale a field dopo la modifica) °___°codice:field[iY][iX] = oldField[newI[1]][newI[0]];
Questo mi fa pensare: clone() mantiene un oggetto uguale all'altro durante tutta l'esecuzione del programma, modificando l'oggetto destinazione per farlo essere SEMPRE uguale a quello sorgente????? °_°
Spero qualcuno mi delucidi su questa situazione perché bloccato a questo punto non posso andare avanti col mio programma ^^;;
Grazie in anticipo!

Rispondi quotando
