Tema: Idioma Java
Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/10/2014, 12:36
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: Idioma Java

Hola,

Cita:
Iniciado por croelanjr Ver Mensaje
... Yo pregunto, en algunos libros hay errores como el Libro de Luis Joyanes, en la programación. ...
No sé que tan nuevo o antiguo sea ese libro, pero posiblemente sea un problema nuevo introducido para corregir versiones anteriores, según lo que recuerdo al igual que el lenguaje C/C++, Java tendía a convertir un int en char cuando era necesario, básicamente un char de C usa 32 bits al igual que el int (en el caso del x86 de 32 bits). No me acuerdo realmente, pero uno cabe dentro del espacio del otro.

Pero eso no significa que sea buena idea convertir de uno a otro indiscriminadamente. Posiblemente ya no es así y ahora tira una excepción, de igual forma no es aconsejable hacerlo; porque depende de cosas que a ti en este caso posiblemente no te van a servir, pero están implementadas porque a muchos les es funcional; como el caso de que un Character usa 64 bits, o dos bytes para darle espacio a Unicode.

Cita:
Iniciado por croelanjr Ver Mensaje
... por ejemplo un metodo donde indique "Desea continuar (S)i o (N)o?" , en la cual presiono la tecla S o N. , ...
El stdin está declarado en la clase java.lang.System como un InputStream, así que tienes que usar el método read(), pero te devuelve un Integer. Opcionalmente puedes usar la clase java.util.Scanner que tiene otros métodos para leer del teclado.

Posiblemente te funcione haciendo un cast a char, aunque no estoy seguro como se va a comportar en todos los escenarios. Adicionalmente tienes que agregar un read() en medio para que se 'coma' el 'espacio vacío entre las dos letras':

Código Java:
Ver original
  1. primero = (char) System.in.read();
  2.             System.in.read();
  3.             ultimo = (char) System.in.read();

Saludos,

Última edición por HackmanC; 21/10/2014 a las 12:45 Razón: correcciones