Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

He escrito una función para convertir cadena a entero

   if ( data != null )
   {
        int theValue = Integer.parseInt( data.trim(), 16 );
        return theValue;
   }
   else
       return null;

Tengo una cadena que es 6042076399 y me dio errores:

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)

¿No es esta la forma correcta de cadena convertido al número entero?

¿Fue útil?

Solución

Esta es la manera en que yo prefiero hacerlo:

Edit (04/08/2015):

Como se señaló en el comentario anterior, esto es en realidad mejor hacerlo de esta manera:

String numStr = "123";
int num = Integer.parseInt(numStr);

Otros consejos

Una Integer no puede mantener ese valor. 6042076399 (413424640921 en decimal) es mayor que 2147483647, el máximo un número entero puede contener.

Trate de usar Long.parseLong.

Ese es el método correcto, pero su valor es mayor que el tamaño máximo de un int.

El tamaño máximo de un int puede contener es de 2 31 - 1, o 2147483647. Su valor es 6042076399. Usted debe buscar en su almacenamiento como long si quieres un tipo primitivo. El valor máximo de una larga es significativamente más grande - 2 63 - 1. Otra opción podría ser BigInteger .

Esa cadena es mayor que Integer.MAX_VALUE. No se puede analizar algo que está fuera del rango de números enteros. (Que van hasta 2 ^ 31-1, creo).

Además de lo que respondieron los demás, si usted tiene una cadena de más de 8 dígitos hexadecimales (pero hasta 16 dígitos hexadecimales), que podría convertirlo en un largo usando Long.parseLong() en lugar de a un int usando Integer.parseInt().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top