Double.parseDouble() donne “Plusieurs Points, NumberFormatException”
J'ai pour comparer deux Chaînes de caractères par l'analyse comme Double
.
Les Chaînes de caractères sont: "2.1.10" et "2.1.9". Ici, j'ai besoin de savoir si la première est supérieure à la seconde ou pas?
Mais, bien que l'analyse à l'aide de ces
Double.parseDouble("2.1.10")
ou Double.parseDouble("2.1.9")
c'est de donner le NullPointerException disant "multi-Points".
- Ce n' "2.1.10" signifie? Qu'avez-vous vous attendre??
- Est-il double?
- Double Possible: stackoverflow.com/questions/198431/...
- et "2.1.9" sont les numéros d'identification dans mon cas. J'ai donc besoin de comparer l'utilisation de ces numéros
- Eh bien, ils sont pas des numéros. Ce
double
valeur vous vous attendriez à ce "2.1.10" pour le représenter? C'est tout simplement pas un nombre. Je me doute que vous êtes l'obtention d'unNullPointerException
, trop, en supposant qu'il est en fait unNumberFormatException
, veuillez modifier la question en conséquence.
Vous devez vous connecter pour publier un commentaire.
Vous ne comparez pas des doubles, vous pouvez comparer les numéros de version, et ce regard, mais ne sont pas des numéros, vous devez comparer chaque position.
Quelque chose comme:
RÉSULTAT:
La raison en est parce que vous avez deux décimales du nombre, qui n'est pas autorisé dans les mathématiques. Retirez l'une des décimales à partir de votre chaîne et il va fonctionner.
Si vous utilisez des numéros de version, de le décomposer en trois numéros, et, comme vous le feriez si vous étiez le contrôle, selon l'ordre alphabétique.
Il n'est pas possible car votre valeur a deux '.' et java ne permet pas de vérifier les deux points décimaux. Enlever un et puis essayer.
Il est recommandé de ventiler la valeur en deux comme par exemple
2.1.10 || 2.1.9
vérifiez d'abord si 2.1 est la même.ensuite, vérifiez si 10/9 est la même ou plus.
Espérons que cela a aidé
Depuis deux représente une valeur numérique, il devrait être mathématiquement correct. En d'autres termes il peut y avoir qu'une seule décimale d'un nombre.
Donc
Double.parseDouble("123.12")
va s'exécuter correctementet
Double.parseDouble("123.1.2")
lève l'exception que vous avez déjà.2.1.10 ne peut jamais être mathématique numéro donc c'est donnant NumberFormatException.
et même si vous passez vide à Double.parseDouble("") jettent toujours la même NumberFormatException.
vous plutôt du magasin "2.1.10" dans la Chaîne, et non dans n'importe quel type de numéro et laissez-moi savoir si vous avez une autre option.