Oppure

Loading
16/09/09 15:10
killer
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


aaa
16/09/09 17:57
netarrow
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.
aaa
16/09/09 18:13
killer
ecco qui in allegato il file...e piuttosto urgente dovrei consegnarlo al professore..grazie..aiutatemi a risolvere il problema..

Ultima modifica effettuata da killer 16/09/09 18:14
aaa
16/09/09 18:47
netarrow
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:

...
 Vector<Cliente> v = new Vector<Cliente>();
        Cliente c = new Cliente(); // qui è l'errore, crei l'oggetto c una volta e usi sempre lui

        do {
            System.out.println("");
            System.out.println("1-Aggiungi cliente");
            System.out.println("2-Visualizza clienti");
...


devi cambiarlo con:

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


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 16/09/09 18:49
aaa
17/09/09 4:51
killer
ok t ringrazio tanto....finalmente l'errore e corretto...
grazie mille...a presto...
aaa