Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Creazione copia di una matrice ad oggetti

    Salve, volevo chiedervi se era possibile creare una copia di una matrice ad oggetti, premetto sono alle prime armi nella programmazione java.
    Sapreste indicarmi qualche metodo.
    Quello che vorrei fare è passare attraverso una funzione una matrice piena e una vuota e copiare in quella vuota il contenuto di quella piena.
    Grazie in anticipo per chi mi sa aiutare a risolvere il problema

  2. #2
    Quote Originariamente inviata da Michele96 Visualizza il messaggio
    Salve, volevo chiedervi se era possibile creare una copia di una matrice ad oggetti, premetto sono alle prime armi nella programmazione java.
    Ciao,

    da come hai posto la domanda , e se posso permettermi ovviamente , ti consiglio
    caldamente di documentarti sulla differenza tra "shallow copy" e "deep copy"

    HTH

  3. #3
    Grazie sspintux per la risposta però visto che non ho capito i metodi che mi hai citato "shallow copy" e "deep copy" stavo provando a fare questo :
    codice:
    //nel main
    Campo campoDiGioco= new Campo();
    
    //Il costruttore di Campo
        public Campo() {
            campoDiGioco= new int[10][10];
            for(int row=0 ; row < campoDiGioco.length; row++ ){
                for(int colonna=0 ; colonna < campoDiGioco.length ; colonna++ ){
                  campoDiGioco[row][colonna]=0;
                }
            }
        }
    
    
    Volevo creare una copia di campoDiGioco e stavo provando così
    
    //nel main 
    Campo campoDiGiocoAvversario1 = new Campo(campoDiGioco);
    
    //nella classe Campo
    e nel costruttore eseguo 
    
        public Campo(Campo campoDiGioco){
            campoAvversario= new int[10][10];
            for(int row=0 ; row < campoAvversario.length; row++ ){
                for(int colonna=0 ; colonna < campoAvversario.length ; colonna++ ){
                    campoAvversario[row][colonna]= campoDiGioco[row][colonna];
                }
            }
        }
    L'errore che mi si è presentato sta nel fatto che sto assegnando ad un intero un oggetto di tipo Campo. Esiste qualche soluzione ?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ciao di nuovo

    Che variabili hai definito nella classe Campo?
    Io ero rimasto al fatto che Campo avesse come variabile: int[][] campoDiGioco , che infatti usi nel primo costruttore.
    Nel secondo costruttore invece scrivi :

    codice:
    campoAvversario=new int[10][10];
    Dovresti ricevere errore qui in teoria perché non hai definito campoAvversario prima, almeno che la classe Campo non abbia anche una variabile definita come int[][] campoAvversario.
    Se invece l'hai definita, rifletti un attimo, non ha molto senso!
    Campo per come l'hai definita è la tua entità di base, non deve conoscere lo stato di un altro Campo, questo lo farà poi un'altra classe.

    Comunque l'errore principale è qui:

    codice:
    campoAvversario[row][colonna]=campoDiGioco[row][colonna];
    campoDiGioco è il campo che hai passato al costruttore, quindi non puoi prenderne un indice come se fosse una matrice.
    Forse ti sei anche confuso con i nomi, cerca di non usare lo stesso nome per una variabile e per un oggetto.
    Quello che dovresti fare dentro quel secondo costruttore è questo:

    codice:
    public Campo(Campo c)
    	{
            campoDiGioco=new int[10][10];
            for(int row=0;row<campoDiGioco.length;row++){
    			for(int colonna=0;colonna<campoDiGioco.length;colonna++){
    				this.campoDiGioco[row][colonna]=c.campoDiGioco[row][colonna];
    			}
    		}
    	}
    Quindi passi un Campo al costruttore, e non fai altro che copiare in ogni cella della matrice del Campo da istanziare la corrispondente cella della matrice campoDiGioco del campo passato come parametro.
    Il this è implicito, quindi lo puoi evitare, l'ho messo solo per chiarezza.

  5. #5
    Grazie Ansharja ho risolto sei sempre disponibile ad aiutare i nuovi iscritti, ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Prego

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.