12341

Solo disponible en BuenasTareas
  • Páginas : 6 (1488 palabras )
  • Descarga(s) : 7
  • Publicado : 22 de mayo de 2010
Leer documento completo
Vista previa del texto
Lee el teclado en java. Sumar dos números
LOS InputStream: EL OBJETO System.in
Al igual que Java nos ofrece System.out para escribir en pantalla, tenemos System.in para leer de ella. System.in es un objeto de una clase de java que se llama InputStream.
Para java, un InputStream es cualquier cosa de la que se leen bytes. Puede ser el teclado, un fichero, un socket, o cualquier otro dispositivode entrada. Esto, por un lado es una ventaja. Si todas esas cosas son InputStream, podemos hacer código que lea de ellas sin saber qué estamos leyendo.

Por otro lado, es una pega. Como un InputStream es para leer bytes, sólo tiene métodos para leer bytes. Nosotros queremos leer palabras o números del teclado, no bytes. 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
Para java, una clase Reader es una clase que lee caracteres. Esto se parece más a lo que queremos. Un Reader tiene métodos para leer caracteres. Con esta clase ya podriamos trabajar. La pena es que seguimos teniendo System.in, que es un InputStream y no un Reader.

¿Cómo convertimos el System.in enReader?. Hay una clase en java, la InputStreamReader, que nos hace esta conversión. Para obtener un Reader, únicamente tenemos que instanciar un InputStreamReader pasándole en el constructor un InputStream. El código es el siguiente
InputStreamReader isr = new InputStreamReader(System.in);
Estamos declarando una variable "isr" de tipo InputStreamReader. Creamos un objeto de esta clase haciendo newInputStreamReader(...). Entre paréntesis le pasamos el InputStream que queremos convertir a Reader, en este caso, el System.in
Ya tenemos el Reader. ¿Cómo funciona exactamente?
* InputStreamReader es un Reader. Se comporta igual que in Reader y se puede poner en cualquier sitio que admita un Reader. Es decir, podemos leer de él caracteres.
* Al constuirlo le hemos pasado un InputStream, enconcreto, System.in. InputStreamReader de alguna forma se lo guarda dentro.
* Cuando a InputStreamReader le pedimos caracteres, él le pide al InputStream que tiene guardado dentro los bytes, los convierte a caracteres y nos los devuelve.
LA CLASE BufferedReader
Con la clase InputStreamReader podríamos apañarnos. La pega es que nos da los caracteres sueltos. Si estamos leyendo de teclado, elque usa el programa puede escribir 10 caracteres o 20 o 13. Si usamos InputStreamReader, como lee caracteres sueltos, Tenemos que decirle cuántos queremos (que no lo sabemos), o bien ir pidiendo de uno en uno hasta que no haya más.

Esto es un poco rollo y si sólo tuvieramos la clase InputStreamReader sería un trozo de código que tendriamos que repetir por muchos lados. Para el cado concreto deleer de teclado, sería ideal si hubiese una clase en java que nos lea de golpe todo lo que ha escrito el usuario de nuestro programa y nos lo diera de un golpe.

Como la gente de Java son muy listos, esa clase existe en Java. Se llama BufferedReader. El mecanismo para obtener un BufferedReader a partir de otro Reader cualquiera (por ejemplo el InputStreamReader), es similar al que usamos antes.Lo instanciamos pasándole en el construtor el Reader. El código es
BufferedReader br = new BufferedReader (isr);
El funcionamiento de esta clase es igual que el InputStreamReader. Cuando le pedmos una línea completa de caracteres (un String), ella se lo pide al Reader que tenga dentro, los convierte en String y nos lo devuelve.
Para pedirle un String, se usa el método readLine(). Este métodolee todos los caracteres tecleados (recibidos si fuera otro dispositivo de entrada) hasta que encuentra la pulsación de la tecla , o como quieras llamarla.
String texto = br.readLine();
Esto lee del teclado un String completo y lo guarda en una variable "texto".
CONVERTIR LA CADENA String EN UN ENTERO int
Si queremos leer un número del teclado, el usuario escribe por ejemplo 123, con la...
tracking img