9
votes

java.lang.numberformatException: pour la chaîne d'entrée

L'éclipse raconte que Lang et je ne peux pas trouver une solution

Exception dans le fil "Main" Java.Lang.NumberFormatxception: pour la chaîne d'entrée: "2463025552" à java.lang.numberformatException.forinPlustring (source inconnue) à java.lang.integer.parseint (source inconnue) à java.lang.integer.parseint (source inconnue) à Main.Main (Main.Java:31) xxx

i Lire du fichier dans ce format noms-adresses, téléphone et annonce dans ArrayList mis pour téléphone, j'ai un problème


0 commentaires

7 Réponses :


29
votes

Integer.parseint jette une exception numériques si la chaîne transmise n'est pas une représentation valide d'un entier. Ici, vous essayez de passer 2463025552 strong> qui est hors de gamme entier fort>.

Utilisez Long, P>

long phone = Long.parseLong(s2[1].trim() )


0 commentaires

1
votes
2463025552 
is a out of range for int data type, try giving lesser number. Also check if it is in correct number format (like no spaces etc)

1 commentaires

C'est un numéro de téléphone donné, nous ne pouvons pas vraiment le changer, donc il convient à un int.



16
votes

Le vrai problème est qu'un numéro de téléphone n'est pas un entier. C'est une chaîne . Vous ne devez pas la stocker comme un numéro, pour des raisons similaires au problème que vous rencontrez maintenant. Il en va de même pour les codes postaux, les numéros de jersey de l'équipe sportive et une foule d'autres "faux" chiffres.


4 commentaires

+1 à Tom G, en utilisant long ou autre type numérique peut causer des problèmes à l'avenir.


Ceci est la réponse correcte. Et si le numéro de téléphone est 000-0001. Voulez-vous vraiment le stocker comme 1? Que montreriez-vous à l'utilisateur?


+1 Tom, accepté ... Mieux vaut mieux faire une corde que longue .. triste, je n'ai pas eu cette pensée en répondant: P,


Stagiaire la variable int to string?



4
votes

Un entier 32 bits signé ne peut lire que jusqu'à 2 ^ 31. Vous devez utiliser un plus grand type de données. Long vous obtiendra jusqu'à 2 ^ 63.


0 commentaires

0
votes

integer.parseint (S2 [1] .trim ()); Voici votre problème. Donc, changez votre analyse entier à long


1 commentaires

Je change d'entier à long et fonctionne parfaitement .. beaucoup de remerciements pour l'aide.



0
votes

Changez votre type de données sur Long ou Bigint. Votre chaîne est trop longue puis int c'est pourquoi elle a une exception ..


0 commentaires

2
votes

La chose fondamentale est que, nous n'avons pas besoin d'un numéro de téléphone pour faire partie d'un calcul arithmétique comme addition, soustraction, etc. Nous pouvons donc le prendre en tant que chaîne en toute sécurité.


0 commentaires