Impossible de convertir chaîne en entier en Java [double]
-
29-09-2019 - |
Question
Cette question a déjà une réponse ici:
J'ai écrit une fonction de chaîne de conversion à l'entier
if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
J'ai une chaîne qui est 6042076399 et il m'a donné des erreurs:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
est-ce pas la manière correcte de la chaîne de conversion à l'entier?
La solution
Voici la façon dont je préfère le faire:
Edit (04/08/2015):
Comme indiqué dans le commentaire ci-dessous, cela est mieux fait réellement comme ceci:
String numStr = "123";
int num = Integer.parseInt(numStr);
Autres conseils
Un Integer
ne peut pas tenir cette valeur. 6042076399 (413424640921 en décimal) est supérieure à 2147483647, le maximum un nombre entier peut contenir.
Essayez d'utiliser Long.parseLong
.
C'est la bonne méthode, mais votre valeur est supérieure à la taille maximale d'un int
.
La taille maximale d'un int
peut contenir est de 2 31 - 1, ou 2147483647. Votre valeur est 6042076399. Vous devriez regarder le stockage comme un long
si vous voulez un type primitif. La valeur maximale d'une longue est nettement plus grande - 2 63 - 1. Une autre option pourrait être BigInteger
.
Cette chaîne est supérieure à Integer.MAX_VALUE. Vous ne pouvez pas quelque chose parse qui est hors de portée des entiers. (Ils vont jusqu'à 2 ^ 31-1, je crois).
En plus de ce que les autres ont répondu, si vous avez une chaîne de plus de 8 chiffres hexadécimaux (mais jusqu'à 16 chiffres hexadécimaux), vous pouvez le convertir en un long en utilisant Long.parseLong()
au lieu de un int en utilisant Integer.parseInt()
.