Buonasera,
domani ho l'esame di informatica mi sono imbattuto nel seguente esercizio:
definire la classe Tavolo per istanziare tavoli le cui proprietà sono il materiale di cui sono fatti, lunghezza,larghezza e altezza. Definire dei metodi appropriati e un metodo toString per la descrizione testuale di un oggetto tavolo e un metodo equals che verifichi l'uguaglianza tra due tavoli.
Costruire l'oggetto Nodo per rappresentare liste di oggetti Tavolo.
Definire un metodo Nodo trasforma(Tavolo[] t) che, dato un array di tavoli, calcoli e restituisca una strutturacollegata di tavoli ordinati per lunghezza, e a parità di lunghezza per larghezza, e che non copi i tavoli uguali.
Io ho scritto il codice, il problema è che in uscita non stampa nulla:
codice:
class Nodo{
Tavolo info;
Nodo next;
public Nodo(Tavolo s,Nodo l){
this.info=s;
this.next=l;
}
}
public class esame2009{
public static void main(String[] args){
Tavolo[] t = new Tavolo[]{new Tavolo("legno",10,3,15),new Tavolo("cemento",12,5,20),new Tavolo("vetro",10,10,40),new Tavolo("legno",10,3,15)};
Nodo v=trasforma(t);
while(v!=null){
System.out.println(v.info);
v=v.next;
}
}
public static void scambia(Tavolo[] a,int i, int j){
Tavolo temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static Tavolo[] ordina(Tavolo[] t){
int i;
int j;
int k;
for(j=0;j<t.length-1;j++){
for(i=1;i<t.length-j;i++){
if(t[i].getLunghezza()<t[i-1].getLunghezza())
scambia(t,i,i-1);
else if(t[i].getLunghezza()==t[i-1].getLunghezza())
if(t[i].getLarghezza()<t[i-1].getLarghezza())
scambia(t,i,i-1);
}
}
return t;
}
public static Nodo trasforma(Tavolo[] t){
Nodo l = new Nodo(t[0],null);
Nodo app = l;
int i;
ordina(t);
for(i=1;i<t.length;i++){
app.next=new Nodo(t[i],null);
app=app.next;
}
return eliminatutti(l);
}
public static Nodo eliminatutti(Nodo l){
while(l!=null){
eliminadoppioni(l.info,l);
l=l.next;
}
return l;
}
public static void eliminadoppioni(Tavolo s,Nodo l){
Nodo prec=l;
Nodo succ=l.next;
while(succ!=null){
if(s.equals(l.info)){
prec.next=succ.next;
succ=prec.next;
}
else{
succ=succ.next;
prec=prec.next;
}
}
}
}
codice:
public class Tavolo{
public String materiale;
public int altezza;
public int lunghezza;
public int larghezza;
public Tavolo(String m,int a,int l,int w){
this.materiale=m;
this.altezza=a;
this.lunghezza=l;
this.larghezza=w;
}
public String getMateriale(){
return this.materiale;
}
public int getAltezza(){
return this.altezza;
}
public int getLunghezza(){
return this.lunghezza;
}
public int getLarghezza(){
return this.larghezza;
}
public String toString(){
return "Tavolo di "+getMateriale()+" larghezza,altezza,lunghezza:["+getAltezza()+"x"+getLunghezza()+"x"+getLarghezza()+"]";
}
public boolean equals(Tavolo q){
return this.getMateriale().equals(q.getMateriale()) && this.getAltezza()==q.getAltezza() && this.getLunghezza()==q.getLunghezza() && this.getLarghezza()==q.getLarghezza();
}
}
grazie in anticipo per la disponibilità!