Excepción en el hilo "main" java.lang.NumberFormatException: Para la cadena de entrada: "3291105000"

¿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.

preguntado el 12 de junio de 12 a las 18:06

Parece que ya sabes exactamente cuál es el problema. -

4 Respuestas

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

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

Utilizar long, que puede contener enteros de 64 bits.

  • ints solo puede contener números enteros hasta ~ 2 mil millones
  • longs puede contener números enteros hasta ~9e18

Respondido el 12 de junio de 12 a las 18:06

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 or haz tu propia pregunta.