Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106

    [JAVA] programma ASCENSORE

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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    Vi prego ragazzi aiutatemi perchè non so più cosa fare

  3. #3
    Non hai considerato il fatto che il metodo remove(int i) della classe Vector sposta tutti gli elementi alla destra dell'elemento i-esimo di una posizione a sinistra dopo la rimozione dell'elemento i-esimo stesso.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Originariamente inviato da albymotard
    Vi prego ragazzi aiutatemi perchè non so più cosa fare
    Non mi pare sollecitare risposte appena un minuto dopo aver scritto il problema.
    Evitiamo questo genere di abusi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    106
    Alka scusami ma volevo metterre tale commento alla fine del primo post...preso dall'agitazione al posto di fare "modifica" ho scritto una nuova risposta con scritto "AIUTOOOO"...
    Satifal invece..scusa la mi ignoranza (ha dovuto guardare tutto il codice per un errore cosi stupido) e mi vergogno a dirlo ma non lo sapevo però ovviamente pensandoci direi che è abbastsanza ovvia la cosa!!!...puoi farmi una dritta su come risolvere questo problema??....cosa posso fare, una volta rimosso l'elemento, per non fargli saltare l'elemento al momento del "REMOVE"??

    cmq ragazzi siete fantastici veramente...non ho mai trovato un forum cosi organizzato e attivo...io veramente non ho parole per quello che fate..un giorno se diventero' bravo aiutero' anch'io come voi state aiutando me!!!!!!....sarebbe un onore, e ripeto ONORE..lavorare con VOI!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.