Bueno , es mi primera toma de contacto con Java por exigencias del guion. He estado leyendo y demas , y me he puesto a hacer una de las cosas más chorras que se pueden hacer , declarar 4 variables ( 3 string y 1 int ) y leerlos por consola.
El resultado... algo extraño , a mi parecer el programa debería de permitirme escribir una linea , darle a enter , y pasar a la siguiente , asi 4 veces , pues bien , resulta que escribo 3 lineas y me da una excepcion.
Pongo el código a ver si alguien me ilumina , seguramente sera una chorrada y se arregla con poca cosa ,pero estoy cegado.
class prueba {
public static void main(String[] args) throws IOException{
try{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
// Leemos los datos
String nom = teclado.readLine();
String ape = teclado.readLine();
String titu = teclado.readLine();
String gr = teclado.readLine();
int grup = Integer.parseInt(gr);
}catch(Exception e){e.printStackTrace();}
}
}
Esto es lo que muestra en la consola :
Citar
--------------------Configuration: <Default>--------------------
imm
cde
gda
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at prac01.main(prac01.java:38)
Process completed.
Saludos!
Lo último que leiste parece ser un "" y eso no es un número.
O eso dice la excepción :p
Si , pero el caso es que segun el código ( y segun yo creo q me puedo equivocar :P ) , la consola deberia dejarme introducir 4 String , y solo me deja introducir 3. Cuando yo le doi al enter al escribir la 3ª ristra , voy a escribir la 4ª q es la q convierto luego a int , pero para ese entonces ya me ha saltado la excepcion... no me lee mas que 3 , eso es lo que me entraña
Si , pero el caso es que segun el código ( y segun yo creo q me puedo equivocar :P ) , la consola deberia dejarme introducir 4 String , y solo me deja introducir 3. Cuando yo le doi al enter al escribir la 3ª ristra , voy a escribir la 4ª q es la q convierto luego a int , pero para ese entonces ya me ha saltado la excepcion... no me lee mas que 3 , eso es lo que me entraña
Bueno , debia de ser que el buffer se llenaba.
Con un System.out.flush() despues de cada lectura del teclado lo he solucionado.
System.out.print("Nombre : ");
nom = teclado.readLine();
System.out.flush();