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?

Était-ce utile?

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().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top