cicciozza ha scritto:
public class Utente {
public String nome;
public String cognome;
public String anno;
public ArrayList<String> tag=new ArrayList<String>();
public Utente(String nome,String cognome,String anno,ArrayList tag){
this.nome=nome;
this.cognome=cognome;
this.anno=anno;
this.tag=tag;
}
Questa è la modifica alla classe utente.
qui sotto metto quella al try nel main
try{
Utente temp=new Utente(nome,cognome,anno,tag);
listaUtenti.add(temp);
}
catch( NumberFormatException e )
sembrano spariti gli errori ma
adesso mi va in nosuchelementexception
Ok il costruttore di Utente.
Oltre a quanto detto da andbin sul catch di una NumberFormatException superfluo, hai rimosso il for innestato dentro al while(st.hasMoreTokens()) ?
Perché quel ciclo esterno, come dicevo in precedenza, fa già il lavoro, ovvero ciclare sulla stringa letta fino a quando ci sono tokens da leggere.
L'errore di cui parli, NoSuchElementException può essere causato dal fatto che fai un nextToken() quando lo StringTokenizer non ha più tokens da leggere. Penso sia dovuto alla riga :
System.out.println(st.nextToken());
Questa riga non stampa il token appena letto ed aggiunto alla lista, ovvero rigaLetta (tra l'altro è poco pulito sostituire rigaLetta, che è già stata creata dal readLine(), con il valore del token, in questo caso non causa errori perché non la usi più e poi la sostituisci con la nuova rigaLetta, ma sarebbe meglio usare un'altra variabile).
L'istruzione dentro al println va a leggere il token successivo, quindi all'ultimo token disponibile (quando ne manca solo uno) tu entri dentro al while(st.hasMoreTokens()) e dentro prima fai un nextToken assegnando a rigaLetta l'ultimo da leggere, e poi ne fai un altro dentro al println che causa l'errore.