Código
import java.io.*; class prueba{ try{ char c; c= (char)leer.read(); leer.read(); leer.read(); c= (char)leer.read(); c= (char)leer.read(); leer.read(); leer.read(); */ } } }
Al finalizar el programa logre capturar caracteres ingresados por consola pero me creo desconfianza el hecho de que necesitara 3 métodos read() para recolectar un carácter.Entiendo que el primer read es para obtener el carácter que deseamos, el segundo seria para recoger el "Enter" o carácter de nueva linea , pero cuando llegamos al 3er read realmente ya no sé por que es necesario.Investigando un poco mas he decidido agregar en el código 2 System.out.println(leer.read()) justo después de que leo el segundo carácter para intentar descifrar que es lo que realmente esta capturando.Efectivamente el programa me regreso dos valores numéricos que al yo relacionarlos con un valor de unicode di a la conclusión de que era el valor tanto del carácter de nueva linea , asi como el de retorno de esta manera tendría que para leer un carácter se necesita en realidad leer 3 caracteres para no dejar valores basura.El primero seria para el carácter que deseamos, el segundo para el carácter de nueva linea y el tercero para el carácter de retorno.
A partir de lo anterior no he comprendido por que en java al momento de escribir en consola realmente me esta colocando el carácter que escribo, el carácter de nueva linea y el carácter de retorno de carro , cuando en otros lenguajes como en C , recuerdo que simplemente bastaba con poner un getchar(); para recolectar el carácter de nueva linea y no tenia que preocuparme por un carácter de retorno debido a que el carácter de nueva linea ya era prácticamente una nueva linea con retorno de carro.De antemano les agradezco por el tiempo que les ha tomado leer esto y les agradecería si me podrian resolver esta duda