Pagina 1 di 1

[JAVA] Trovare l'errore

Inviato: sabato 7 maggio 2016, 17:40
da matteo1095
Salve ragazzi sto facendo un programmino ma sto riscontrando un problema. La porzione di codice incriminata è questa:

Codice: Seleziona tutto

ArrayList<Cruciverba> cruci = new ArrayList<>();
for(String parola: dict_par.keySet()){
	rigeneraMatrice();
	addRadice(parola);
	if(controlla()==true){
	     Cruciverba c=new Cruciverba();
	     c.grid=this.grid;
	     c.current_words=this.current_words;
	     c.dict_par=this.dict_par;
	     cruci.add(new Cruciverba());
	}
}
Voglio fare in modo che ogni volta che la funzione controlla() ritorna true mi venga creato un nuovo oggetto di tipo Cruciverba con una determinata matrice, un determinato dizionario e determinate parole che gli vengono assegnate dopo. Il problema sta però che quando vado a stampare cruci tutti gli oggetti al suo interno sono uguali (stessa grid,stessa current_words,stessa dict_par) e nel caso di grid corrisponde proprio all'ultima grid generata dalla funzione, è come se così facendo avessi creato un reference. Come posso ovviare al problema? Graziee

Re: [JAVA] Trovare l'errore

Inviato: sabato 7 maggio 2016, 19:13
da Zoff
Se grid è un oggetto puoi usare il metodo clone() per ottenere una copia: https://docs.oracle.com/javase/7/docs/a ... lone%28%29

Re: [JAVA] Trovare l'errore

Inviato: sabato 7 maggio 2016, 23:46
da matteo1095
Ciao Zoff grazie per la risposta, ma grid è una semplice matrice con dei valori char

Re: [JAVA] Trovare l'errore

Inviato: domenica 8 maggio 2016, 0:16
da Zoff
L'ultima volta che ho controllato in java array e matrici erano oggetti quindi non vedo il problema. :p

Codice: Seleziona tutto

char a[][] = {};
System.out.println(a instanceof Object); //Stampa true