Jump to content

Problème activité.


Atari45

Recommended Posts

Bonjour, encore moi xD

 

Pas facile d'explication...

 

J'ai une activité qui comporte 3 boutons radios. Dans le code, chaque bouton radio comporte une partie de code afin d'exécuter un calcul mathématique.

 

J'ouvre mon application, j'arrive sur cette activité. Ensuite je clique sur un des boutons radio, ce qui me fais le calcul correctement.

 

Mais lorsque je veux appuyer sur un autre bouton radio, l'application s'arrête alors qu'elle devrait effectuer le calcul...

 

PS: j'ai fais joindre une image de mon activité, je pense que pour comprendre cela sera plus simple...

 

Je pose les bases de mon problème, si vous voulez plus d'info, n'hésitez pas.

Merci

 

post-196968-0-34164400-1376899674_thumb.

 

 

Link to comment
Share on other sites

Les logCats lorsque je passe du 1er bouton au 2eme bouton :

 

08-19 12:25:56.566: E/AndroidRuntime(8092): FATAL EXCEPTION: main
08-19 12:25:56.566: E/AndroidRuntime(8092): java.lang.NumberFormatException: Invalid float: "4,50"
08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.StringToReal.parseFloat(StringToReal.java:310)
08-19 12:25:56.566: E/AndroidRuntime(8092): at java.lang.Float.parseFloat(Float.java:300)
08-19 12:25:56.566: E/AndroidRuntime(8092): at com.example.lenssensor.MainActivity$3.onClick(MainActivity.java:147)
 
Je comprend très bien l'erreur mais lorsque je commence par le bouton radio 2 je n'ai pas d'erreur.. C'est quand je change de bouton que cela fais ceci.
 
Pour expliquer l'erreur :
Quand je clique sur le premier bouton j'ai les valeurs :
Object size : 6 et 4.5 (qui est le fruit de mon calcul)
ObjectDistance : 5 (ce que moi je rentre)
FocalLength : 2 (que je rentre)
VisualAngle : (ce fais par un calcul)
 
En cliquant sur le premier j'obtiens bien 6 et 4.5 mais lorsque je clique sur le 2eme ce logcat apprait...
 
Pour finir la ligne 147 est : float nbObjSizeg = Float.parseFloat(nbObjSize2.getText().toString()); qui correspond au 4.50
 
voila voila j'espere avoir été clair... :)
Link to comment
Share on other sites

bizarre. je n'ai jamais joué avec cela mais j'aurai pensé qu'Android le gèrerait de façon transparente.

avant de convertir, le plus simple est donc de faire

 

float nbObjSizeg = Float.parseFloat(nbObjSize2.getText().toString().replaceAll(",", "."));

Link to comment
Share on other sites

Essaye d'utiliser NumberFormat, c'est fait pour gérer les conversions de nombre en prenant en compte la locale (qui est la cause de ton problème ici, car un nombre est représenté avec une virgule comme séparateur décimal en français, et avec un point en anglais, par ex.)

 

String str = NumberFormat.getInstance().format(monReel);
pour la conversion en chaine

 

float monReel = NumberFormat.getInstance().parse(maChaine).floatValue();

pour convertir une chaine en float

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...