Salve a tutti,
mi sono imbattuto in un esercizio java, che simula il mescolamento di un mazzo di 52 carte, ma c'è un punto che non riesco a capire...
posto il codice:
Classe Carta
Classe MazzoDiCartecodice:public class Carta { private String valore; private String seme; public Carta (String valoreCarta, String semeCarta) { valore = valoreCarta; seme = semeCarta; } }
Il mio dubbio è questo:codice:import java.util.Random; public class MazzoDi Carte { private Carta mazzo[]; private int prossimaCarta; private final int NUMERO_DI_CARTE = 52; private Random numeroCasuale; public MazzoDiCarte() { String valori[] = {"ASSO", "DUE", "TRE", "QUATTRO", "CINQUE", "SEI", "SETTE", "OTTO", "NOVE", "DIECI", "JACK", "DONNA", "RE"}; String semi[] = { "CUORI", "QUADRI", "FIORI", "PICCHE" }; mazzo = new Carta [ NUMERO_DI_CARTE ]; prossimaCarta = 0; numeroCasuale = new Random(); for ( int cont = 0; cont < mazzo.length; cont++) mazzo [ cont ]= new Carta (valori [cont % 13], semi [cont / 13]); }//fine costruttore //mescola il mazzo di carte public void mescola() { prossimaCarta = 0; //per ogni carta scegline un'altra a caso e scambiale for ( int first = 0; first < mazzo.length; first++) { int second = numeroCasuale.nextInt ( NUMERO_DI_CARTE ); //scambia la Carta corrente con quella presa casualmente Carta temp = mazzo [first]; mazzo[first] = mazzo [second]; mazzo [second] = temp; }//fine for } }
crea una variabile "reference" temp che punta all'indice first dell'array mazzo;codice:Carta temp = mazzo [first];
assegna all'indice first dell'array mazzo, il valore dell'indice second (che è un numero casuale) dello stesso array;codice:mazzo[first] = mazzo [second];
a questo punto, a rigor di logica (per un neofita come me)
temp, mazzo[first] e mazzo [second] dovrebbero essere uguali, dato che la variabile "reference" temp, punta allo stesso oggetto di mazzo[first], e, dopo l'istruzione
tutti e tre hanno lo stesso valore..codice:mazzo[first] = mazzo [second];
qualcuno sarebbe così gentile da dimostrarmi il contrario????
grazie in anticipo![]()
![]()
![]()

)
Rispondi quotando
