Ciao ragazzi ho un problema con questo programma...gestisce un ascensore che fa salire e scendere persone...ho delle restrizioni(essendo un compito)....le classi e i metodi devono avere quei nomi e devono restituire e passare solo quei parametri che ho messo (quindi non posso modificare l'intestazione del metodo).
Cmq il problema è che quando faccio la verifica di chi c'e' in ascensore, certe persone non scendo e non capisco il perchè (classe COLONNA che gestisce l'ascensore, classe ASCENSORE)
Ascensore.java
codice:
import java.util.Vector;
public class Ascensore
{
private int PesoMax;
private int PersoneMax;
private Vector<Persona> vett;
private Colonna col;
public Ascensore(int a, int b)
{
PesoMax = a;
PersoneMax = b;
vett = new Vector<Persona>();
}
public void setColonna(Colonna a)
{
col = a;
}
public boolean sale(Persona p)
{
if(vett.size() < PersoneMax && (getPesoTot() + p.getPeso() <= PesoMax))
{
vett.add(p);
return true;
}
else
return false;
}
public void scende(Persona p)
{
int a = p.destinazione();
int b = col.nrPiano();
if(a == b)
{
vett.remove(p);
System.out.println("Persona SCESA");
}
else
System.out.println("Persona NON SCESA");
}
public Vector<Persona> getVettPersona()
{
return vett;
}
public int getPesoTot()
{
int kg = 0;
for(Persona i: vett)
kg = kg + i.getPeso();
return kg;
}
public String toString()
{
return "Ascensore con "+vett.size()+" persone per un peso tot di "+getPesoTot();
}
}
Colonna.java
codice:
import java.util.Vector;
public class Colonna
{
private Ascensore elevatore;
private Piano[] livello;
private int pianoCorrente;
public Colonna(Ascensore a, Piano[] b)
{
elevatore = a;
livello = b;
pianoCorrente = 0;
}
public void muoviAscensore(int prossimoPiano)
{
pianoCorrente = prossimoPiano;
}
public Piano piano()
{
return livello[pianoCorrente];
}
public int nrPiano()
{
return pianoCorrente;
}
public void movimentaPersone()
{
//Scendono dall'ascensore
for(int e = 0; e<elevatore.getVettPersona().size();e++){
//stampo la persona che sto elaborando
System.out.println("Sto elaborando "+elevatore.getVettPersona().get(e).toString());
elevatore.scende(elevatore.getVettPersona().get(e));
}
//Salgono sull'ascensore
for(Persona i: piano().getVettPiano())
{
if(elevatore.sale(i))
System.out.println("Persona salita in ascensore");
else
System.out.println("Persona NON salita in ascensore");
}
}
}
Persona.java
codice:
public class Persona
{
private int destinazione;
private int peso;
public Persona(int a, int b)
{
destinazione = a;
peso = b;
}
public int destinazione()
{
return destinazione;
}
public int getPeso()
{
return peso;
}
public String toString()
{
return "Persona con un peso di "+getPeso()+", con destinazione piano "+destinazione();
}
}
Piano.java
codice:
import java.util.Vector;
public class Piano
{
private Vector<Persona> inAttesa;
public Piano()
{
inAttesa = new Vector<Persona>();
}
public Vector<Persona> getVettPiano()
{
return inAttesa;
}
public void aggiungi(Persona p)
{
inAttesa.add(p);
}
public Persona persona(int i)
{
return inAttesa.get(i);
}
}
mainProva.java
codice:
import java.util.Vector;
class mainProva
{
public static void main(String[] a)
{
Ascensore alfa = new Ascensore(5000,1000);
//ASCENSORE - HO MESSO QUESTI VALORI COSI POSSO SALIRE TUTTE LE PERSONE POSSIBILI IN ASCENSORE SENZA RESTRIZIONI SUL PESO E NUMERO.
Piano uno = new Piano();
Piano due = new Piano(); //PIANO
Piano tre = new Piano();
Piano[] array = new Piano[3];
array[0] = uno;
array[1] = due;
array[2] = due;
uno.aggiungi(new Persona(1,79));
uno.aggiungi(new Persona(1,75));
uno.aggiungi(new Persona(2,76));
uno.aggiungi(new Persona(2,68));
due.aggiungi(new Persona(0,65));
due.aggiungi(new Persona(2,79));
due.aggiungi(new Persona(2,90));
tre.aggiungi(new Persona(0,110));
Colonna beta = new Colonna(alfa,array); //COLONNA
alfa.setColonna(beta); //Collegamento Colonna-Ascensore
beta.movimentaPersone();
System.out.println("IN ASCENSORE ORA");
for(Persona i:alfa.getVettPersona())
System.out.println(i.toString());
beta.muoviAscensore(1);
System.out.println("IN ASCENSORE ORA");
for(Persona i:alfa.getVettPersona())
System.out.println(i.toString());
beta.movimentaPersone();
//QUA SI PRESENTA IL PROBLEMA...NON MI VIENE CONSIDERATA LA PERSONA CHE PESA 75KG...è come s enon esistesse!!!! QUINDI QUANDO VADO A RIVEDERE CHE PERSONE CI SONO NELL'ASCENSORE VEDO ANCORA LA PERSONA DI 75 KG CHE IN REALTA' DOVEVA SCENDERE!!
System.out.println("IN ASCENSORE ORA");
for(Persona i:alfa.getVettPersona())
System.out.println(i.toString());
}
}