Ejecutando tu código creo que por fin he entendido tu problema.
No falla al meter datos por consola, falla al leer de un fichero, que es como lo prueban los de la página.
Tal y como has creado tu bucle no se detiene al llegar al final del fichero, intenta leer otro next pero ni existe ni va a esperar a que se introduzca, por lo que falla.
Para resolverlo efectivamente tienes que usar hasNext
Cita: while(in.hasNext() && !(letra.equals("N")) | (numero!=0))
No me gusta como solución, pero es lo único que se me ocurre sin tocar el resto del código.
Si no buscabas solucionar el problema que comento, el hasNext no te sirve para nada, sólo sirve para leer de fichero.