No se puede convertir cadena a entero en Java [duplicado]
-
29-09-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo se convierte una cadena a un int en Java? 42 respuestas
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?
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()
.