Lettura txt con readLine

lupodimare2
Ciao a tutti, ho il seguente problema e spero che voi possiate aiutarmi.

una mia classe java deve leggere delle informazioni da un file di testo così formato:

CLIENTE
NOME COGNOME
INDIRIZZO
TELEFONO1,TELEFONO2
ETA'
AUTOMOBILE1,TARGA,MODELLO
AUTOMOBILE2,TARGA,MODELLO
AUTOMOBILE3,TARGA,MODELLO
CLIENTE
NOME COGNOME
INDIRIZZO
TELEFONO1,TELEFONO2
ETA'
AUTOMOBILE1,TARGA,MODELLO
AUTOMOBILE2,TARGA,MODELLO
CLIENTE
NOME COGNOME
INDIRIZZO
TELEFONO1,TELEFONO2
ETA'
AUTOMOBILE1,TARGA,MODELLO
AUTOMOBILE2,TARGA,MODELLO
AUTOMOBILE3,TARGA,MODELLO
AUTOMOBILE4,TARGA,MODELLO
AUTOMOBILE5,TARGA,MODELLO
AUTOMOBILE6,TARGA,MODELLO




Vorrei se possibile immagazzinare le info dei singoli clienti in array che contengono le informazioni sul cliente.
Ho pensato ovviamente di fare un ciclo per leggere tutte le linee del file e quando trovo CLIENTE di interrompere il ciclo e immagazzinare le info in un array.
Faccio nel seguente modo:


BufferedReader br = null;
String r;
Vector v = new Vector();
String[] arrayClienti = new String[1000];

try {
// apre file
br = new BufferedReader(new FileReader(nomefile));

// legge file e scrive le righe lette su System.out
for (;;) { // ciclo infinito esco se valore == null
r = br.readLine(); // legge la prossima riga del file

if (r == null) {break;} // esce dal ciclo se le righe sono finite
v.addElement(r);

//System.out.println("["+i+"]---->>"+v.elementAt(i));


if(v.elementAt(i).equals("CLIENTE")){break;}

}

Non riesco a crearmi gli array con gli oggetti che si trovano tra le due stringhe CLIENTI come posso fare?

Grazie per il vostro aiuto.

Risposte
Umby2
Non ho ben capito quale separatore hai tra il Cognome ed il Nome,
lo spazio potrebbe risultare non efficiente in quanto potresti avere un cognome "doppio" tipo DI NATALE,
oppure un nome doppio tipo ANNA MARIA

lupodimare2
ciao e grazie per la risposta, il campo nome cognome è unico e non ho separatori.

gundamrx91-votailprof
Ma la scelta di memorizzare i singoli dati del cliente in un array e' obbligata oppure puoi fare altro? Perche' nel caso penserei ad una classe specifica...

lupodimare2
Non sono obbligato a memorizzare le info in un array, posso utilizzare anche qualcos'altro, l'importante è avere poi uno strumento di facile consultazione da leggere e aggiornare.

gundamrx91-votailprof
Allora dovrebbe essere abbastanza facile creando una classe apposita (quindi con tanto di proprieta' e metodi)... il problema maggiore potrebbe essere sulla gestione di una lista per memorizzare i dati delle automobili associate al cliente (anche questa una classe volendo), ma e' solo una questione di conoscenza del linguaggio immagino....

lupodimare2
potresti farmi un esempio su come impostare questa classe? la lettura del file va bene o va modificata?

gundamrx91-votailprof
Ora non so la sintassi di java (lavoro con delphi...), ma dovrebbe essere qualcosa del genere:

class cliente
{
private string nome_cognome;
private string indirizzo;
private string telefono1;
private string telefono2;
private integer eta;
private linkedlist autoCliente automobile;
public create(......);
public string getNomeCognome();
....
public setNomeCognome(string s);
.....
}

la linkedlist ti serve per memorizzare la lista di automobili che sarebbero rappresentate dalla classe auto:

class automobile
{
private string auto;
private string targa;
private string modello;
public create(.....);
public get.....
public set....
}

quindi ti devi creare n oggetti automobile da "scrivere" nella proprieta' autoCliente.
Spero di averti dato uno spunto utile :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.