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