Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Aiuto su reference!!!

  1. #1

    Aiuto su reference!!!

    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

    codice:
    public class  Carta {
    
    private String valore;
    private String seme;
    
    public Carta (String valoreCarta, String semeCarta)
    {
    valore = valoreCarta;
    seme = semeCarta;
    }
    }
    Classe MazzoDiCarte

    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
    
          }
    
       }
    Il mio dubbio è questo:

    codice:
               Carta temp = mazzo [first];
    crea una variabile "reference" temp che punta all'indice first dell'array mazzo;

    codice:
    mazzo[first] = mazzo [second];
    assegna all'indice first dell'array mazzo, il valore dell'indice second (che è un numero casuale) dello stesso array;

    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

    codice:
    mazzo[first] = mazzo [second];
    tutti e tre hanno lo stesso valore..

    qualcuno sarebbe così gentile da dimostrarmi il contrario????


    grazie in anticipo

  2. #2
    La variabile temp non punta alla cella, ma all'oggetto che si trova in quell'istante nella cella.

  3. #3
    GRAZIE, mi hai tolto un forte dubbio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.