Ciao devo creare una torre che contiene blocchi colorati e blocchi jolly(aventi rispettivamente un numero ed un colore) dello stesso colore ma contenti numeri diversi:
Il problema è la classe Torre:
In pratica la mia classe non aggiunge all'arrayList nessun Blocco...È come se non riconoscesse alcun Blocco...Perche?Dov'è che sbaglio?codice:import java.util.*; class Torre{ String nome; ArrayList<Blocco> blocchi; Torre(String nome){ this.nome=nome; blocchi=new ArrayList<Blocco>(); } /** addBlocco(Blocco b) Pone in cima alla torre il blocco b se questo è possibile, cioè se sono rispettati i vincoli 1, 2 e 3.*/ public void addBlocco(Blocco b){ if(b instanceof BloccoColorato){ verificabloccolorato(b); }else if(b instanceof BloccoJolly){ verificabloccjolly(b); } } public void verificabloccolorato(Blocco b){ BloccoColorato i=(BloccoColorato)b; BloccoColorato h=new BloccoColorato(i.numero,i.colore); Blocco c; c=i; if(h.puoStareSopraA(c)&&h.numero!=c.numero){ blocchi.add(h); } } public void verificabloccjolly(Blocco b){ BloccoJolly i=(BloccoJolly)b; BloccoJolly h=new BloccoJolly(i.numero); Blocco c; c=h; //se hanno lo stesso colore ma numeri diversi,allora aggiungo all'ArrayList if(h.puoStareSopraA(c)&&h.numero!=c .numero ){ blocchi.add(h); } } public int numColorati(){ int count=0; for(Blocco b:blocchi){ if(b instanceof BloccoColorato){ count++; } } return count; } public int numJolly(){ int count=0; for(Blocco b:blocchi){ if(b instanceof BloccoJolly){ count++; } } return count; } /**Restituisce true se la torre contiene un blocco il cui numero e uguale al numero del blocco b , false altrimenti*/ public boolean containsBlocco(Blocco b){ boolean bx=false; for(Blocco u:blocchi){ if(u instanceof BloccoColorato || u instanceof BloccoJolly){ if( u.numero==b.numero ){ bx=true; } } } return bx; } public String toString(){ return ""+blocchi; } public static void main(String[] args){ BloccoColorato g=new BloccoColorato(9,"verde"); BloccoColorato gx=new BloccoColorato(8,"verde"); BloccoColorato gt=new BloccoColorato(10,"arancione"); BloccoColorato gg=new BloccoColorato(11,"grigio"); BloccoColorato gu=new BloccoColorato(17,"arancione"); BloccoColorato gi=new BloccoColorato(19,"marrone"); Torre t=new Torre("fff"); t.addBlocco(g); t.addBlocco(gx); t.addBlocco(gt); t.addBlocco(gu); t.addBlocco(gg); t.addBlocco(gi); System.out.println(t); } }![]()

Rispondi quotando
.