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());

	
	}
}