La Web del Programador: Comunidad de Programadores
 
    Pregunta:  13603 - COMO UTILIZAR EL SYSTEM.OUT.READ PARA CAPTURAR NúMEROS.
Autor:  Max Jordan
Estoy aprendiendo a programar Java y me topado que al ingresar valores con System.in.read() no puedo realizar operaciones matemáticas con el valor ingresado.
Ayudenme ! Por fa...

  Respuesta:  David Olivan Ubieto
Vamos a ver, lo primero te recomendaria que te leyeses algun manual de Java ("Thinking in JAVA" es excelente pero un poco tocho) para poder manejar correctamente los tipos y las conversiones entre ellos. Lo segundo, te puedes ir acostumbrando a leer la API (la API es tu amiga, tenla siempre abierta en el navegador...) para encontrar lo que buscas (un buen nivel de ingles no te ira mal...). Concretamente, el atributo "in" de la clase System es un InputStream. Si te miras un poco el paquete java.io veras que con la InputStream solo puedes leer a nivel de Byte. Tenemos que utilizar otra clase un poco mas potente. Echando un vistazo vemos la BufferedReader con su maravilloso metodo readLine (), que se lo unico que necesitas para leer por teclado. Esta clase se crea pasandole una Reader, por ejemplo, la InputStreamReader y a su vez esta necesita una InputStream, por ejemplo la in. Con todo esto tenemos una maravillosa funcion que espera a que el usuario introduzca algo por teclado, le de al Enter y entonces te lo devuelve como un String. Ahora no tienes mas que convertir a lo que tu esperas que haya introducido el usuario. Por ejemplo, si esperas que el usuario introduzca un numero entero, necesitaras hacer un parse a tipo int. Esto se hace con el maravilloso metodo parseInt (String s) de la clase Integer. Ten cuidado que has de capturar la excepcion que puede lanzar si lo introducido no es un numero, la NumberFormatException. Si quieres leer un float, pues parseFloat (String s) de la clase Float y asi.

Puesto todo esto junto, lo que tienes que hacer es lo siguiente (por ejemplo):

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

int entero;
try {
entero = Integer.parseInt (teclado.readLine ());
} catch (IOException e1) {/* Error de E/S, practicamente imposible, no pongas nada */}
catch (NumberFormatException e2) {/* La cadena introducida no es un numero */
System.out.println ("El dato introducido no es correcto.");}

entero = entero / 2; /* Ya puedes hacer lo que quieras... */

De nada.