Vous trouverez ci-dessous un extrait de code,
int a = 1;
char b = (char) a;
System.out.println(b);
Mais ce que j'obtiens est une sortie vide.
int a = '1';
char b = (char) a;
System.out.println(b);
Je vais obtenir 1 comme résultat.
Quelqu'un peut-il m'expliquer cela ? Et si je veux convertir un int en char comme dans le premier snippet, que dois-je faire ?
int a = 1;
char b = (char) a;
System.out.println(b);
imprimera le caractère avec la valeur ascii 1 (caractère de début de titre, qui n'est pas imprimable).
int a = '1';
char b = (char) a;
System.out.println(b);
imprimera le caractère de valeur ascii 49 (correspondant à '1' ;).
Si vous voulez convertir un chiffre (0-9), vous pouvez lui ajouter 48 et le convertir, ou quelque chose comme Character.forDigit(a, 10);
.
Si vous voulez convertir un int
en valeur ascii, vous pouvez utiliser Character.toChars(48)
par exemple.
int a = 1;
char b = (char) a;
System.out.println(b);
hola, j'ai eu le même problème mais j'ai utilisé le code suivant.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Avec cela, vous obtenez la valeur décimale comme un type char. J'ai utilisé charAt() avec l'index 0 parce que la seule valeur dans cette chaîne est 'a' ; et comme vous le savez, la position de 'a' ; dans cette chaîne commence à 0.
Désolé si mon anglais n'est pas bien expliqué, j'espère que cela vous aidera.
En Java, un char est un int. Votre premier extrait imprime le caractère correspondant à la valeur 1 dans le schéma de codage des caractères par défaut (qui est probablement Unicode). Le caractère Unicode U+0001 est un caractère non imprimable, c’est pourquoi vous ne voyez aucune sortie.
Si vous souhaitez imprimer le caractère '1' ;, vous pouvez rechercher la valeur de '1' ; dans le schéma de codage que vous utilisez. Dans Unicode, cette valeur est 49 (la même que dans ASCII). Mais cela ne fonctionne que pour les chiffres de 0 à 9.
Il est préférable d'utiliser une chaîne plutôt qu'un caractère et d'utiliser la méthode intégrée toString()
de Java :
int a = 1;
String b = toString(a);
System.out.println(b);
Cela fonctionnera quel que soit l'encodage de votre système, et fonctionnera pour les nombres à plusieurs chiffres.