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
Colonna.javacodice: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(); } }
Persona.javacodice: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"); } } }
Piano.javacodice: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(); } }
mainProva.javacodice: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); } }
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()); } }

Rispondi quotando
