Java para programadores(4.6c). Entradas desde teclado

Lectura de datos por teclado con Scanner

La clase Scanner permite leer datos desde un stream de entrada en función del tipo esperado, para ello dispone de métodos para cada tipo

next() Devuelve el dato como String
nextByte() Devuelve el dato como byte
nextDouble() Devuelve el dato como double
nextFloat() Devuelve el dato como float
nextInt() Devuelve el dato como int
nextLine() Devuelve el contenido hasta el siguiente fin de línea, como string

Si en la entrada existen múltiples datos, esta clase, los separa con el espacio y se pueden ir solicitando cada una de las partes, de forma independiente.

Hemos de tener en cuenta, que excepto en el caso de nextLine(), el carácter de fin de línea se queda en el buffer con el consiguiente problema en la posterior lectura

Para saber si en el buffer de entrada quedan más elementos, podemos utilizar hasNext(),  y si los datos no vinieran separados por espacios, también podríamos utilizar useDelimiter(String) para indicar el separador.

Ejemplo:

Para solicitar por teclado dos números, podríamos hacer:

Podemos observar que si en la primera entrada, escribimos los dos números separados por un espacio, ya no se parara para solicitar la siguiente entrada. Luego, si deseamos aceptar solo una entrada en cada petición, deberemos limpiar el buffer

 

Lectura de datos por teclado con BufferedReader

Si queremos realizar una lectura de teclado de forma manual, podemos utilizar el stream de entrada estándar que nos proporciona System.in. Para ello, si queremos leer una línea, deberemos repetir la lectura hasta encontrar el carácter “\n” que nos marca el final de la línea; por ejemplo:

Este sistema, tiene dos inconvenientes; el primero es que nos debemos mantener en un bucle sobre el sistema de entrada subyacente, y deberemos conocer sus características, aparte de la sobrecarga que representa, el segundo, es que si debemos leer varias líneas, deberemos definir un bucle de nivel superior

Para evitar todo esto, disponemos de la clase BufferedReader que nos permite leer una línea de golpe

Antes de poderlo utilizar, tenemos que tener en cuenta que esta clase hereda de Reader, por lo que trabaja con caracteres y no con bytes, por lo que necesitamos una fuente de caracteres, y como queremos leer de la consola…

Ahora ya tenemos un InputStreamReader que podemos utilizar con

Si necesitamos leer varias líneas, lo podremos hacer con;

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Formacion, Java. Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.