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:

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);
 }
}
In pratica la mia classe non aggiunge all'arrayList nessun Blocco...È come se non riconoscesse alcun Blocco...Perche?Dov'è che sbaglio?