Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Array dinamico..
Forum - Java - Array dinamico..

Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 17:10
Mercoledì, 16/09/2009
salve ragazzi..
allora ho un problema..pratikamente..dopo l'acquisizione di 2 clienti con due nomi diversi ovviamente,ho salvato l'oggetto nel vettore cosi:

Vector vett=new Vector();
Cliente c=new Cliente();
c.Acquisisci();//Acquisisco nome,cognome, di ogni cliente etc....
vett.addElement(c);//Quindi se riacquisisco di nuovo,l'indice interno si incrementa automaticamente memorizzandomi un altro cliente...pero sembra che non lo faccia

in quanto,
una volta salvato, devo visualizzare tutto il vettore e,se ne ho memorizzati 2 di clienti,
mi stampa per due volte  pero con tutti gli attributi esattamente uguali...perche?
questo e il ciclo di visualizzazione

int index=0;
for(index=0;index<v.size();index++){
   c=(Cliente)v.get(index);
   System.out.println("Il nome é:"+c.nome);
   System.out.println("Il cognome é:"+c.cognome);
   .....
   .....
   .....
}
bene arrivato a questo mi stampa due volte esattamente gli stessi dati..aiutatemi...
fatemi sapere presto..grazie



PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 19:57
Mercoledì, 16/09/2009
assicurati di creare diverse istanze della classe Cliente, magari per sbaglio crei un unico oggetto e aggiungi/modifichi sempre lo stesso.

se posti il codice completo che legge e salva gli elementi possiamo vedere se c'è altro.

PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 20:13
Mercoledì, 16/09/2009
ecco qui in allegato il file...e  piuttosto urgente dovrei consegnarlo al professore..grazie..aiutatemi a risolvere il problema..



killer ha allegato un file: test.zip (17521 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da killer il 16/09/2009 alle 20:14
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 20:47
Mercoledì, 16/09/2009
ok ho guardato l'errore è confermato il creare una sola istanza di Cliente, quindi tu lavori sempre sullo stesso oggetto modificando e aggiungendo sempre lui.

Quindi qui:

Codice sorgente - presumibilmente Java

  1. ...
  2.  Vector<Cliente> v = new Vector<Cliente>();
  3.         Cliente c = new Cliente(); // qui è l'errore, crei l'oggetto c una volta e usi sempre lui
  4.  
  5.         do {
  6.             System.out.println("");
  7.             System.out.println("1-Aggiungi cliente");
  8.             System.out.println("2-Visualizza clienti");
  9. ...



devi cambiarlo con:

Codice sorgente - presumibilmente Java

  1. ...
  2.  Vector<Cliente> v = new Vector<Cliente>();
  3.         Cliente c = null;
  4.         do {
  5. /*qui è giusto, ogni volta che il ciclo viene eseguito viene creato un nuovo oggetto cliente */
  6.             c = new Cliente();
  7.             System.out.println("");
  8.             System.out.println("1-Aggiungi cliente");
  9.             System.out.println("2-Visualizza clienti");
  10. ...



Inoltre, dal punto di vista del design, dovresti separare l'input dai dati reali, cioè creare l'entità Cliente facendole contenere solo dati e metodi che hanno a che fare con la responsabilità di un cliente.
La responsabilità nel sistema di leggere i dati è di un livello più alto nel progetto, ora come ora il dato Clinte è incastonato con la parte di codice che legge e inizializza i dati a console e questo non è formalmente corretto.
Dovresti demandare la lettura ad una classe esterna e inizializzare Cliente mediante il suo costruttore.

Ultima modifica effettuata da netarrow il 16/09/2009 alle 20:49
PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 6:51
Giovedì, 17/09/2009
ok t ringrazio tanto....finalmente l'errore e corretto...
grazie mille...a presto...

PM Quote