A continuación se muestra un fragmento de código,
int a = 1;
char b = (char) a;
System.out.println(b);
Pero lo que obtengo es una salida vacía.
int a = '1';
char b = (char) a;
System.out.println(b);
Voy a obtener 1 como mi salida.
¿Alguien puede explicar esto? Y si quiero convertir un int a un char como en el primer fragmento, ¿qué debo hacer?
int a = 1;
char b = (char) a;
System.out.println(b);
imprimirá el carácter con valor ascii 1 (carácter de inicio de cabecera, que no es imprimible).
int a = '1';
char b = (char) a;
System.out.println(b);
imprimirá el carácter con valor ascii 49 (el correspondiente a '1')
Si quieres convertir un dígito (0-9), puedes añadirle 48 y lanzarlo, o algo como Character.forDigit(a, 10);
.
Si quieres convertir un int
como valor ascii, puedes usar Character.toChars(48)
por ejemplo.
int a = 1;
char b = (char) a;
System.out.println(b);
hola, bueno yo pasé por el mismo problema pero lo que hice fue el siguiente código.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Con esto obtienes el valor decimal como tipo char. Utilicé charAt() con índice 0 porque el único valor dentro de esa Cadena es 'a' y como sabes, la posición de 'a' dentro de esa Cadena empieza en 0.
Perdona si mi inglés no está bien explicado, espero que te ayude.
En java un char es un int. Su primer fragmento imprime el carácter correspondiente al valor de 1 en el esquema de codificación de caracteres por defecto (que probablemente sea Unicode). El carácter Unicode U+0001 es un carácter no imprimible, por lo que no se ve ninguna salida.
Si quiere imprimir el carácter '1', puede buscar el valor de '1' en el esquema de codificación que esté utilizando. En Unicode es 49 (el mismo que ASCII). Pero esto sólo funcionará para los dígitos 0-9.
Es mejor utilizar un String en lugar de un char, y utilizar el método incorporado de Java toString()
:
int a = 1;
String b = toString(a);
System.out.println(b);
Esto funcionará sea cual sea la codificación de su sistema, y funcionará para números de varios dígitos.