Excepción en el hilo "main" java.lang.NumberFormatException: Para la cadena de entrada: "3291105000"
Frecuentes
Visto 5,681 veces
4
¿Por qué está pasando esto? La cadena que estoy analizando parece claramente un int. El programa está leyendo un archivo, y sé que está funcionando al máximo porque este número está muy abajo en la lista. ¿Algunas ideas? Además, el programa está analizando enteros superiores a 2.2 millones, por lo que no sé si se trata de un problema de tamaño.
4 Respuestas
7
Una firma de 32 bits int
solo puede ser tan grande como 2^31, o 0x7FFFFFFF (2,147,483,647). Deberá utilizar un tipo de datos más grande. long
te llevará hasta 2^63. O la Entero grande class obtendrá un número entero de tamaño arbitrario.
Respondido el 12 de junio de 12 a las 18:06
Desafortunadamente no existe tal cosa como un unsigned int
en Java :( - tkuzzy
2
int
puede tener un valor mínimo de -2,147,483,648
y un valor máximo de 2,147,483,647
(inclusive), su número (de la cadena) cae fuera del rango
Utiliza long
Long.parseLong(3291105000)
funcionaría para usted
Respondido el 12 de junio de 12 a las 18:06
0
Utilizar long
, que puede contener enteros de 64 bits.
int
s solo puede contener números enteros hasta ~ 2 mil milloneslong
s puede contener números enteros hasta ~9e18
Respondido el 12 de junio de 12 a las 18:06
0
Como dijeron otros, el número está claramente fuera del rango de int y, por lo tanto, está obteniendo la excepción.
4 bytes, con signo (complemento a dos). -2,147,483,648 a 2,147,483,647. Como todos los tipos numéricos, los enteros pueden convertirse en otros tipos numéricos (byte, short, long, float, double). Cuando se realizan conversiones con pérdida (por ejemplo, de int a byte), la conversión se realiza módulo la longitud del tipo más pequeño.
Respondido el 12 de junio de 12 a las 18:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java exception numberformatexception or haz tu propia pregunta.
Parece que ya sabes exactamente cuál es el problema. - asawyer