Leer el teclado en java
Veamos como leer desde el teclado en Java. Java es enigmático en esto xD
asi es que vamos por partes.
La Clase InputStream: El Objeto System.in
Asi como vimos que Java nos ofrece System.out para la salida de datos por la pantalla, también tenemos System.in para la entrada de datos. System.in es un objeto de una clase llamada InputStream. InputStream es para leer bytes y sólo tiene métodos para leer bytes.
Pero nosotros no queremos leer bytes, sino queremeos leer letras y números del teclado :@ !! Por ejemplo si escribimos en el teclado una A mayúscula y la leemos con System.in, obtendremos un entero de valor 65, que es el valor del byte correspondiente a la A.
Los Reader
La clase Reader es una clase que lee carácteres, un Reader tiene métodos para leer caracteres.
Ahora el problema es :
¿ Cómo convertir el System.in en Reader?
Pues para felicidad de nosotros, existe la clase InputStreamReader, que hace esta conversión.
¿Cómo obtener un Reader?
Debemos instanciar un InputStreamReader , pasando en el constructor un InputStream
InputStreamReader isr = new InputStreamReader(System.in);
Declaramos la variable isr de tipo StreamReader.Luego creamos un objeto de esta clase escribiendo new InputStreamReader(). Entre las paréntesis le pasamos el InputStream que queremos pasar a Reader. Y ya tenemos nuestro Reader
¿Ahora, cómo es su funcionamiento?
InputStreamReader es un Reader. Al construirlo le hemos pasado un InputStream.
Cuando pedimos caracteres a InputStreamReader, él le pide al InputStream que es el que tiene guardado los bytes, luego estos bytes los convierte a caracteres y nos lo devuelve.
La Clase BufferedReader
La clase InputStreamReader nos da los caracteres sueltos y como son caracteres sueltos debemos decirle cúantos caracteres queremos que lea. Y si tuvieramos solo la clase InputStreamReader sería bastante código.
Pero para la solución existe la clase BuffeerReader. El mecanismo para obtener un BufferReader a partir de otro Reader es similar al que usamos antes.
Lo instanciamos pasándole en el constructor el Reader.
BufferedReader br = new BufferedReader (isr);
En cuanto al funcionamiento es similar al del InputStreamReader. Cuando pedimos una línea de caracteres (String), ella se lo pide al Reader, los convierte en String y nos lo devuelve.
Para pedir un String se usa el método readline()
String texto1 = br.readLine();
Esto lee del teclado un String y lo guarda en la variable texto1
Convertir una Cadena (String) a un Entero (Int)
Ahora que pasa si queremos convertir un String a un Entero, por ejemplo si escribimos "4285", con la clase BufferReader obtendremos un String de 4 caracteres. Y eso no es igual al número 4285.
Para convertir usaremos la clase Integer, pero esta clase es bien estricta asi es que tenga cuidado con ella =P , para convertir un String a int es necesareo que el String sea un int. Por ejemplo si escribimos "java" nunca podra ser convertido a int. Otro caso seria si escribimos "42 85" tampoco sería convertido ya que el espacio entre el 42 y el 85 hace que falle, ya que el espacio lo toma como un caracter.
La conversión se realiza de la siguiente manera:
int valor = Integer.parseInt(texto1);
El código anterior intenta cambiar lo que esta almacenado en la variable texto1 a un valor entero, siempre y cuando texto1 sea un int.
Aplicación Simple Leyendo desde el teclado
Aca les dejo una simple aplicación para que todo lo explicado anteriormente quede más claro.
// Importando la librería io (Entrada y Salida) import java.io.*; public class LeerTeclado { public static void main(String[] args) throws Exception{ // Habilitando el teclado para el ingreso de datos BufferedReader teclado; teclado = new BufferedReader (new InputStreamReader(System.in)); // Declaración de variables float importe; String nombre; //Entrada de datos System.out.print("Digite el nombre del cliente => "); // usamos el método readLine para guardar lo escrito como String nombre = teclado.readLine(); System.out.print("Digite el importe de compra de "+nombre+ " => "); // Por defecto lo que escribimos se almacena como cadena o String // Para guardarlo como entero usamos la clase Integer y el método parseInt importe = Integer.parseInt(teclado.readLine()); //Salida de Datos System.out.println("El importe de " + nombre + "es " + importe); } }


Exelente articulo.
Muy explicativo y explicito.
Exactamente al grano y sin vueltas.
Muchas grax!
Que bueno que se haya entendido
!
Una pregunta, q pasa si quiero ingresar o un entero o una cadena, x ejemplo ingrese nº de expediente o nombre, por que cada uno me lee una cosa
Hola, no entendi muy bien como se usa. Es que hace 2 clases que tuve y queria aprender por mi parte por eso intente hacer un programita que leyera de teclado, sera que tendrian un codigo de ejemplo? desde ya muchas gracias.
Salu2
Estoy empezando a aprender Java y tu artículo ha sido claro, puntual y preciso. Gracias, me fue de mucha ayuda.
Saludos,
Me gustaría que hubieran ejemplos del tema.
La verdad gordi, es que no entendi mucho, tendrías un código de programa para mostrar???
Listo, ya deje un ejemplo muy simple, y creo que ese ejemplo basta para poder entender
Hola k tal, WillxD crees k sea posible k me puedas echar una mano estoy bn interesado en java pero no tengo conocimiento alguna de programacion y he bajado varios manuales, los cuales estan de una forma digamos para aquellos que tienen una base de poo, lo cual no tengo si conoces de algun link de inicio te estare agradecido. oneou@live.com
Gracias x adelanta2.
Hola, gracias por el codigo, me ha sido de gran ayuda!!