Comment analyser chaîne contenant un nombre négatif par j2me api?
J'ai une chaîne qui a des nombres. - Je convertir cette chaîne et de stocker ces chiffres en int, float, etc. En conséquence
String str = "100,2.0,-100,19.99,0";
Je peux le faire par Integer.parseInt()
et Float.parseFloat()
après la séparation. Mais je ne peux pas le faire pour un nombre négatif. Il jette exception java.lang.NumberFormatException
. Après des recherches sur le web je n'ai pas trouvé de solution pour ce problème.
Alors, comment puis-je analyser un entier négatif de la chaîne et de les stocker dans des int à l'aide de j2me ensemble d'api?
Confusion formulation: "je peux le faire ... après la séparation", vous aurez évidemment besoin de diviser sur
avez-vous envisager d'utiliser Chaîne de caractères.startsWith méthode? par exemple
,
afin d'analyser quoi que ce soit.Float.parseFloat()
devrait fonctionner, peut-cou préciser un peu plus de code/contexte de l'exception?avez-vous envisager d'utiliser Chaîne de caractères.startsWith méthode? par exemple
if (myString.startsWith("-")) { myString = myString.substring(1); }
OriginalL'auteur masiboo | 2012-02-02
Vous devez vous connecter pour publier un commentaire.
Il devrait y avoir rien de spécial à l'analyse des nombres négatifs par rapport à nombre positif.
Le code ci-dessus devrait fonctionner parfaitement bien.
Ce pourrait y avoir un problème avec votre code, c'est que vous êtes en train d'analyser un flotteur avec le mauvais séparateur décimal. Si vos paramètres régionaux a
.
comme séparateur décimal, le code ci-dessus est OK. Toutefois, si vos paramètres régionaux a,
comme séparateur décimal, l'analyse sera un échec (avec unNumberFormatException
).Donc, assurez-vous que vous êtes fractionnement de l'original correctement, et que chacune des parties après le split sont sur un format valide (par exemple, avec le bon séparateur décimal).
Mise à jour:
Si vous voulez savoir comment analyser un numéro à l'aide des paramètres régionaux spécifiques, vous pouvez par exemple regarder cette question.
OriginalL'auteur Julian
J'ai eu un problème similaire aujourd'hui et le problème était que le signe moins dans la chaîne d'entrée est en fait un m-caractère tiret. C'était méchant! Donc, c'est certainement la peine de vérifier.
OriginalL'auteur jweile
Précisions: eh Bien, je pensais que tu voulais la distinction entre int et float. Juste
Float.parseFloat(..)
sera de faire aussi bien, Pas besoin decontains
test. 🙂 Mal lu!Sortie
Mise à jour donc:
fonctionne également.
OriginalL'auteur Nishant
C'est étrange, peut-être son un problème de codage. Entier.parseInt() doit travailler avec des nombres positifs et négatifs ainsi que d'autres méthodes similaires (Float.analyser...).
Ce que vous pouvez faire est de toujours vérifier pour un signe '-' ou '+' avant de l'analyser et d'attribuer le signer à la suite de l'analyse.
Cette méthode a l'avantage, comme si vous recevez le nombre avec le signe " + " à la norme Entier.parseInt ne fonctionne pas.
OriginalL'auteur Kris
Vous pouvez diviser par le délimiteur ',' et vérifiez si il y a un signe négatif donc multiplier le nombre par
-1
ou de le faire parIl fonctionnera correctement.
OriginalL'auteur JDC92