Java - Error con un bucle de entrada de datos por teclado

 
Vista:

Error con un bucle de entrada de datos por teclado

Publicado por Fiz (2 intervenciones) el 27/03/2008 20:26:58
Hola a todos,

Estoy empezando a programar con Java y estoy haciendo un ejercicio que lee tres números consecutivamente en pantalla para almacenarlos en tres variables distintas, pero al ejecutar este bucle, después de la primera iteración me da error de formato. Parece como si la segunda vez no esperase la entrada de datos en el teclado y enviase una cadena vacia a la variable.

Alguien puede ayudarme?

public static void main(String[] args) throws IOException {
int numeros []=new int [3];
char c;
String cadena= new String();
for (int n=0;n<=2;n++) {
System.out.println("Introduzca un número, por favor...");
c= (char) System.in.read();
cadena=Character.toString(c);
numeros[n]= Integer.parseInt(cadena);
cadena="";
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error con un bucle de entrada de datos por tecl

Publicado por hadrien (25 intervenciones) el 29/03/2008 02:06:56
Hola,
te falta un pequeño detalle:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

- BufferedReader: Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
- InputStreamReader: An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset. The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted.

De este modo, tu código quedaría (y sólo hace falta una conversión):

import java.io.*;

public static void main(String args[]) throws IOException {
int numeros[] = new int[3];
String c ="";
BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
for (int n = 0; n <= 2; n++) {
System.out.println("Introduzca un número, por favor...");
c = sc.readLine();
numeros[n] = Integer.parseInt(c);
}
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error con un bucle de entrada de datos por tecl

Publicado por Fiz (2 intervenciones) el 29/03/2008 11:41:46
Gracias por la ayuda,

Efectivamente es la opción más recomendada para hacerlo, pero mi pregunta iba encaminada a saber por curiosidad por qué fallaba el código, es decir qué estaba haciendo mal, porque por mucho que lo analizo no entiendo por qué la primera vez funciona y falla en la segunda iteración.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar