Ciao a tutti ragazzi.
vi spiego:
la lettura da un file di testo "listautenti.txt" avviene solo se il file è composto da stringhe ordinate del tipo nome - cognome - anno - tag
es Paperone - De Paperoni - 1946 - soldi
Ma il compito d'esame mi richiede che il file accetti un numero >=0 di tag non definiti a priori.
In sintesi dovrei renderlo in grado di leggere un file di testo composto così:
Pico - De Paperis - 1965 - storia - geografia - paperopoli - scienze
Paperone - De Paperoni - 1946 - soldi
Gastone - Comesichiama - 1968
Il codice che ho scritto finora va in errore(noSuchFile) se il file non è formattato con un solo tag
mi potreste aiutare a risolvere il problema?
codice:import java.util.ArrayList;import java.util.Scanner; import java.util.StringTokenizer; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class UtenteMain { public static void main(String[] args) { ArrayList<Utente>listaUtenti=new ArrayList<Utente>(); try{ //inizializzazione strumenti lettura FileReader fr=new FileReader("listautenti.txt"); BufferedReader br=new BufferedReader(fr); //lettura del file riga per riga String rigaLetta = br.readLine( ); while(rigaLetta!=null) { StringTokenizer st=new StringTokenizer(rigaLetta, "-"); String nome=st.nextToken(); String cognome=st.nextToken(); String anno=st.nextToken(); String listaTag=st.nextToken(); try{ Utente temp=new Utente(nome,cognome,anno,listaTag); listaUtenti.add(temp); } catch( NumberFormatException e ) { System.out.println( "Errore DA DECIFRARE NEL CODICE: " + rigaLetta + "; record" ); } rigaLetta = br.readLine( ); } br.close( ); // stampa a video la lista completa (temporaneamente) for ( Utente elementi: listaUtenti ) //if (elementi.nome.equalsIgnoreCase("Mario")) per fare una selezione sulla stampa System.out.println(elementi.nome +" "+ elementi.cognome+ " "+ elementi.anno+" "+ elementi.listaTag); }catch(FileNotFoundException e){ System.out.println("Errore -file non trovato"); }catch(IOException e){ System.out.println("Errore nella lettura file(corrotto)"); } } }

Rispondi quotando
