web-dev-qa-db-fra.com

Convertir int en caractère en java

Ci-dessous, un extrait de code,

int a = 1;
char b = (char) a;
System.out.println(b);

Mais ce que je reçois, c'est une sortie vide.

int a = '1';
char b = (char) a;
System.out.println(b);

Je vais obtenir 1 comme ma sortie. 

Quelqu'un peut-il expliquer cela? Et si je veux convertir un int en un caractère comme dans le premier extrait, que dois-je faire?

95
user2640480
int a = 1;
char b = (char) a;
System.out.println(b);

affichera le caractère avec la valeur ascii 1 (caractère de début de titre non imprimable).

int a = '1';
char b = (char) a;
System.out.println(b);

affichera le caractère avec la valeur ascii 49 (un correspondant à '1')

Si vous voulez convertir un chiffre (0-9), vous pouvez en ajouter 48 et transtyper, ou quelque chose comme Character.forDigit(a, 10);.

Si vous voulez convertir une valeur int en ascii, vous pouvez utiliser Character.toChars(48) par exemple.

86
jh314

Ma réponse est similaire à celle de jh314 mais je vais expliquer un peu plus en profondeur.

Ce que vous devez faire dans ce cas est:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

Ici, nous avons utilisé '0' car les caractères sont représentés par les valeurs ASCII. "0" est un caractère et est représenté par la valeur 48. 

Nous avons tapé (a + '0') et, afin de les additionner, Java a converti '0' en sa valeur ASCII qui est 48 et a vaut 1, la somme est donc 49. Nous avons ensuite procédé comme suit:

(char)(49)

Nous avons lancé int à char. ASCII équivalent de 49 est '1'. Vous pouvez convertir n'importe quel chiffre en caractère de cette manière. C'est une méthode plus intelligente et meilleure que d'utiliser la méthode .toString() puis de soustraire le chiffre à l'aide de la méthode .charAt().

43
Haggra

Il semble que vous cherchiez la méthode Character.forDigit:

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

Il existe également une méthode permettant de convertir un caractère en un entier:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

Notez qu'en changeant la RADIX, vous pouvez également prendre en charge hexadécimal (base 16) et toute base allant jusqu'à 36 (ou Character.MAX_RADIX, également appelé).

34
Simon Forsberg
int a = 1;
char b = (char) a;
System.out.println(b);

hola, bien je suis passé par le même problème mais ce que j'ai fait était 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 sous forme de type char. J'ai utilisé charAt () avec l'index 0 car 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.

9
3ryck
int a = 1;
char b = (char) (a + 48);

En ASCII, chaque caractère a son propre numéro. Et le caractère '0' est 48 pour le nombre décimal, '1' est 49 et ainsi de suite. Donc si

char b = '2';
int a = b = 50;
1
bigpig

Si nous parlons de types de classe - pas de primitives, l'astuce suivante doit être faite:

Integer someInt;
Character someChar;

someChar = (char)Integer.parseInt(String.valueOf(someInt);
1
matua

Personne n'a répondu à la vraie "question" ici: vous convertissez correctement int en caractère; dans la table ASCII, une valeur décimale de 01 est "début d'en-tête", un caractère non imprimable. Essayez de rechercher une table ASCII et de convertir une valeur int comprise entre 33 et 7E; cela vous donnera des personnages à regarder.

1
apraetor

si vous souhaitez imprimer des caractères ASCII en fonction de leur code ASCII et que vous ne voulez pas aller au-delà (comme les caractères Unicode), vous pouvez définir votre variable sous forme d'octet, puis utiliser la conversion (char). c'est à dire.:

public static void main(String[] args) {
    byte b = 65;
    for (byte i=b; i<=b+25; i++) {
        System.out.print((char)i + ", ");
    }

En passant, le code ASCII pour la lettre 'A' est 65

0
MohS

regardez le programme suivant pour le concept de conversion complet

class typetest{
    public static void main(String args[]){
        byte a=1,b=2;
        char c=1,d='b';
        short e=3,f=4;
        int g=5,h=6;
        float i;
        double k=10.34,l=12.45;
        System.out.println("value of char variable c="+c);
        // if we assign an integer value in char cariable it's possible as above
        // but it's not possible to assign int value from an int variable in char variable 
        // (d=g assignment gives error as incompatible type conversion)
        g=b;
        System.out.println("char to int conversion is possible");
        k=g;
        System.out.println("int to double conversion is possible");
        i=h;
        System.out.println("int to float is possible and value of i = "+i);
        l=i;
        System.out.println("float to double is possible");
    }
}

espérons que cela aidera au moins quelque chose

0
Shivam Rai

En Java, un caractère est un entier. Votre premier extrait imprime le caractère correspondant à la valeur 1 dans le schéma de codage de 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. En Unicode, il s'agit de 49 (identique à ASCII). Mais cela ne fonctionnera que pour les chiffres de 0 à 9.

Vous feriez peut-être mieux d'utiliser une chaîne plutôt qu'un caractère et d'utiliser la méthode toString() intégrée de Java:

int a = 1;
String b = toString(a);
System.out.println(b);

Cela fonctionnera quel que soit le codage de votre système et fonctionnera pour les nombres à plusieurs chiffres.

0
david25272

Assurez-vous que la valeur entière est la valeur ASCII d'un alphabet/caractère.

Si non, alors fais-le.

for e.g. if int i=1

puis ajoutez-y 64 pour qu'il devienne 65 = ASCII valeur de 'A' Ensuite, utilisez

char x = (char)i;

print x

// 'A' will be printed 
0
Mayur Gudi

Chaque fois que vous tapez cast integer sur char, la valeur ascii de cet entier sera renvoyée (une fois, passez par la table ascii pour une meilleure compréhension).

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D
0
ajay verma