Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Inserimento più attributi in una stringa

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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cicciozza Visualizza il messaggio
    Il codice che ho scritto finora va in errore(noSuchFile) se il file non è formattato con un solo tag
    Mah .. intanto il codice è un po' dubbio. Che volevi fare con:

    String listaTag=st.nextToken();
    ?

    Non è così che leggi una "lista" di quei tag. Con questo nextToken ne leggi solo uno e basta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Mah .. intanto il codice è un po' dubbio. Che volevi fare con:

    String listaTag=st.nextToken();
    ?

    Non è così che leggi una "lista" di quei tag. Con questo nextToken ne leggi solo uno e basta.
    A punto, vorrei capire come utilizzare proprio quel nextToken per fargi leggere più tag, indefiniti come numero.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da cicciozza Visualizza il messaggio
    vorrei capire come utilizzare proprio quel nextToken per fargi leggere più tag, indefiniti come numero.
    Semplicemente "in ciclo", sfruttando anche hasMoreTokens(). Poi questi token arbitrari sarebbe sensato metterli in una "collezione".
    Tutto lì.
    Ultima modifica di andbin; 21-12-2016 a 19:10
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    ahia, parli strano con "collezione".
    mi potresti fare un esempio?
    Non riesco proprio a capire

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Le collezioni in java.util es. ArrayList, LinkedList, ecc...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Le collezioni in java.util es. ArrayList, LinkedList, ecc...
    Andbin, un suggerimento un pelo più mirato?
    Non capisco come impostarlo altrimenti.
    Cosa devo fare? creare un altro arraylist per i soli tag?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Nota che StringTokenizer ha anche countTokens() che dice quanti token rimangono da leggere (con i deliminatori impostati) prima che StringTokenizer si "esaurisca" lanciando NoSuchElementException.
    Questo può essere utile per sapere a priori quanti token restano e quindi per poter ad esempio istanziare un array della giusta dimensione (così non hai bisogno delle "collezioni").


    Quote Originariamente inviata da cicciozza Visualizza il messaggio
    creare un altro arraylist per i soli tag?
    Sì, questo sarebbe l'approccio da usare volendo usare una collezione (es. ArrayList) per i vari tag.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.