Il problema sta nell'utilizzo di un operatore di confronto non valido:
codice:
while ((stud.readLine()!=null) || (stud.readLine()==""))
Non si usa l'operatore == con gli oggetti: il confronto con == avviene tra indirizzi!!
Si usa il metodo equals():
codice:
while ((stud.readLine()!=null) || (!stud.readLine().equals("")))
Inoltre, vorrei farti notare che in questo modo perdi di volta in volta una riga!
Ciascuna chiamata al metodo readLine() legge una riga dal file: mettendo due volte questo metodo, leggi due volte dal file, quindi l'elaborazione salta sempre la prima riga letta (e tutte le righe in posizione dispari).
Prima si legge la riga e la si salva in una variabile, poi si testa il valore di questa variabile, senza andare a leggere nuovamente il file.


Ciao.