[java]richiamare un metodo di un altra classe

di il
1 risposte

[java]richiamare un metodo di un altra classe

Ciao ho un piccolo problemino nella risoluzione di un metodo; in pratica non riesco a capire come posso richiamare una classe(con i relativi parametri) in un altra classe:

import java.util.*;
class Torre{
    String nome;
    ArrayList<Blocco> a;
    Torre(String nome){
        this.nome=nome;
        a=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 boolean addBlocco(Blocco b){
Torre t=new Torre(nome);
//oggetto = altraClasse.nomeOggetto;
BloccoColorato n=(BloccoColorato)b; // è l'ogetto successivo?
boolean o=false;
    if(!t.containsBlocco(b) && b.puoStareSopraA(n)){
        a.add(b);
        o=true;
            
}return o;
}
    public int numColorati(){
        int count=0;
        for(Blocco b:a){
            if(b instanceof BloccoColorato){
                count++;
            }
        }
        return count;
    }
    public int numJolly(){
        int count=0;
        for(Blocco b:a){
            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:a){
            if(u instanceof BloccoJolly ||u instanceof BloccoColorato && u.numero==b.numero){
                    bx=true;
            }
        
    }return bx;
}
public String toString(){
    String s="";
    for(Blocco v:a){
        if(v instanceof BloccoJolly ||v instanceof BloccoColorato){
            
    s+=v.toString();

}
}return s;
}
        
public static void main(String[] args){
    Torre t=new Torre("fff");
    BloccoColorato g=new BloccoColorato(9,"rosso");
    BloccoColorato dv=new BloccoColorato(9,"arancione");
    BloccoJolly h=new BloccoJolly(3);
    System.out.println(t.addBlocco(g));
    System.out.println(t.addBlocco(dv)); 
 }
}
nello specifico il metodo problematico è:

/**    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 boolean addBlocco(Blocco b){
Torre t=new Torre(nome);
BloccoColorato n=(BloccoColorato)b; //è l'ogetto successivo?
boolean o=false;
    if(!t.containsBlocco(b) && b.puoStareSopraA(n)){
        a.add(b);
        o=true;
            
}return o;
}
Il mio problema è il metodo dentro all'if,b.puoStareSopraA(n),dove n è il BloccoColorato successivo;volendo anche creare un nuovo oggetto BloccoColorato... che ciufolo di parametri metto? In parole povere come faccio a creare in una classe un ogetto di un altra classe con parametri diversi e che risulti quindi l'oggetto successivo nel metodo main? scusate per i giri di parole

1 Risposte

  • Re: [java]richiamare un metodo di un altra classe

    Ti invito ad indentare in modo decente il codice perchè così è illegibile.

    Siccome da quello e da come hai scritto non si capisce niente, ti dico che per utilizzare un metodo di una classe all'interno di un'altra classe occorre o istanziare l'oggetto di cui vuoi chiamare il metodo o, se il metodo è statico, utilizzare la notazione NomeClasse.metodo().
Devi accedere o registrarti per scrivere nel forum
1 risposte