Sarabbe meglio che evitassi di aprire due thread uguali, se vedi che non ottieni risposta con il primo, puoi sempre includere una altro messaggio (anche vuoto) per farlo tornare in cima alla lista.
Un' altra cosa: inserici il tuo codice tra i tag [ CODE ] e [ /CODE ] (senza spazi), in tal modo codice risultera' formattato e piu' semplice da comprendere.
Detto questo ti includo la soluzione al problema. Ci sono almeno due errori gravi, in quello che hai scritto tu: devi imparare ad usare la gestione degli errori con try e catch, visto che e' un meccanismo piuttosto potente, ti consente di scrivere codice piu' elegante e piu' robusto.
In questo modo funziona, se non capisci qualche correzione, chiedi pure.codice:import java.io.*; import java.util.*; public class Registro { public static void main(String args[])throws Exception { //Leggo dal file i dati che mi servono File myFile = new File("./studenti.txt"); BufferedReader br = new BufferedReader(new FileReader(myFile)); //Un vettore che sarà riempito di oggetti di tipo studente Vector v = new Vector(); Studente allievo = Studente.leggi(br); while(allievo != null) { //Inserisco gli oggetti nel vettore v.addElement(allievo); System.out.println(allievo.getNome() + " " + allievo.getMedia() + " "); //Assegnazione che dovrebbe permettermi di uscire dal ciclo allievo = Studente.leggi(br); } try { //ricorda di chiudere i file br.close(); } catch(IOException eIO) { eIO.printStackTrace(System.out); } //Scorro il vettore e dovrei stampare Enumeration enum = v.elements(); while(enum.hasMoreElements()) { allievo = (Studente) enum.nextElement(); System.out.println(allievo.getNome() + " " + allievo.getMedia()); } } } class Studente { private String nome; private int voto; public Studente(String nome, int voto){ this.nome = nome; this.voto = voto; } public static Studente leggi(BufferedReader br) throws Exception{ String tmp = br.readLine(); //Se il file arriva alla fine, esce dal metodo restituendo null if(tmp == null) return null; String nome = tmp; //Stessa considerazione di prima, se non c'e' il voto dopo il nome tmp = br.readLine(); if(tmp == null) return null; int voto = Integer.parseInt(tmp); //inutile creare un oggetto solo per restituirlo return new Studente(nome, voto); } public int getMedia(){ return voto; } public String getNome(){ return nome; } }

Rispondi quotando