Conversion de caractères en nombres entiers en Java

Quelqu’un peut-il m’expliquer ce qui se passe ici:

char c = '+'; int i = (int)c; System.out.println("i: " + i + " ch: " + Character.getNumericValue(c)); 

Ceci imprime i: 43 ch:-1 . Est-ce que cela signifie que je dois compter sur des conversions primitives pour convertir char en int ? Alors, comment puis-je convertir un Character en Integer ?

Edit: Oui, je sais que Character.getNumericValue renvoie -1 si ce n’est pas une valeur numérique et que cela a du sens pour moi. La question est: pourquoi les conversions primitives renvoient-elles 43 ?

Edit2: 43 est l’ASCII pour + , mais je m’attendrais à ce que la dissortingbution ne réussisse pas, tout comme getNumericValue n’a pas réussi. Sinon, cela signifie qu’il y a deux manières équivalentes de faire la même opération, mais avec des résultats différents?

 Character.getNumericValue(c) 

java.lang.Character.getNumericValue(char ch) renvoie la valeur int que représente le caractère Unicode spécifié. Par exemple, le caractère '\u216C' (le chiffre romain cinquante) renverra un int avec une valeur de 50.

Les lettres AZ dans leur majuscule ('\u0041' through '\u005A') , la minuscule ('\u0061' through '\u007A') et la variante pleine largeur ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A') formulaires ont des valeurs numériques de 10 à 35. Ceci est indépendant de la spécification Unicode, qui n’atsortingbue pas de valeurs numériques à ces valeurs de caractères.

Cette méthode renvoie la valeur numérique du caractère, en tant que valeur int non négative;

-2 si le caractère a une valeur numérique qui n’est pas un entier non négatif;

-1 si le caractère n’a pas de valeur numérique.

Et voici le lien.

Comme l’indique clairement la documentation, Character.getNumericValue() renvoie la valeur du caractère sous forme de chiffre.
Il renvoie -1 si le caractère n’est pas un chiffre.

Si vous voulez obtenir le sharepoint code Unicode numérique d’un object Character boîte, vous devez d’abord le désinstaller:

 int value = (int)c.charValue(); 

Essayez l’une des options ci-dessous. Celles-ci devraient fonctionner:

 int a = Character.getNumericValue('3'); int a = Integer.parseInt(Ssortingng.valueOf('3'); 

De Javadoc pour le Character#getNumericValue :

Si le caractère n’a pas de valeur numérique, -1 est renvoyé. Si le caractère a une valeur numérique qui ne peut pas être représentée comme un entier non négatif (par exemple, une valeur fractionnaire), alors -2 est renvoyé.

Le caractère + n’a pas de valeur numérique, vous obtenez donc -1.

Mettre à jour:

La raison pour laquelle la conversion primitive vous donne 43 est que le caractère ‘+’ est codé comme le nombre entier 43.

43 est le nombre de décimales pour le symbole “+”. Cela explique pourquoi vous obtenez un retour 43. http://en.wikipedia.org/wiki/ASCII

 public class IntergerParser { public static void main(Ssortingng[] args){ Ssortingng number = "+123123"; System.out.println(parseInt(number)); } private static int parseInt(Ssortingng number){ char[] numChar = number.toCharArray(); int intValue = 0; int decimal = 1; for(int index = numChar.length ; index > 0 ; index --){ if(index == 1 ){ if(numChar[index - 1] == '-'){ return intValue * -1; } else if(numChar[index - 1] == '+'){ return intValue; } } intValue = intValue + (((int)numChar[index-1] - 48) * (decimal)); System.out.println((int)numChar[index-1] - 48+ " " + (decimal)); decimal = decimal * 10; } return intValue; }