Java - Vaciar el flujo E/S

 
Vista:

Vaciar el flujo E/S

Publicado por Juan (5 intervenciones) el 23/04/2003 03:21:42
Estoy haciendo un programita y tengo el siguiente problema:
Cuando quiero leer un caracter del teclado, yo pongo:
System.out.print("Son correctos los datos?(s/n): ");
do{
try{
c= (char) System.in.read();
}
catch (IOException e) {
c='n';
}
}while (c!='s' && c!='S' && c!='n' && c!='N');

Pero me lee el caracter y además hace como si despues leyera un ENTER. Como puedo hacer que al pulsar el caracter+ENTER sólo me lea el caracter? Es que además no lo hace siempre, a que se debe?
Gracias por vuestra ayuda.
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:Vaciar el flujo E/S

Publicado por chuidiang (532 intervenciones) el 23/04/2003 09:21:02
Es normal. Al leer la entrada de teclado, lee todo lo que has pulsado en el teclado, incluido e. <enter>. Es cosa tuya el ignorarlo en tu código.
Se bueno.
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:Vaciar el flujo E/S

Publicado por Juan (1 intervención) el 23/04/2003 18:43:06
En otros lenguajes, como C sólo se queda con el caracter (lo mas normal), pero en Java no. Pero, por que solo lo hace a veces? otras veces no pasa. De todas formas, hay alguna instruccion como el fflush de C?
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:Vaciar el flujo E/S

Publicado por chuidiang (532 intervenciones) el 27/04/2003 21:06:58
En C tambien pasa, por eso usas el fflush, para eliminar el resto de caracteres que no has leido (el retorno de carro).
No se si hay algo como fflush en java, pero supongo que no cuesta hacer un pequeño bucle que lea y tire caracteres hasta encontrar el adecuado (sobre todo si sólo quieres eliminar retornos de carro).

Se bueno
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