2017-05-03 4 views
1

J'essaie de lire les données d'edittext et les stocker en double variable, mais le problème est que les données ne stockent pas dans la variable pour le rendre clair, j'ai cet extrait de code:analyser une donnée d'edittext à double numéro

String RR=Editcredit1.getText().toString(); 
 
     double w4; 
 
     try { 
 
      w4 = Double.parseDouble(RR); 
 
     } catch (NumberFormatException e) { 
 
      w4 = 3; // your default value 
 
     }

le code ci-dessus, je suis en train de stocker la valeur edittex dans la variable mais il passe à la valeur par défaut qui est 3, si je change le code et fais comme ça

String RR=Editcredit1.getText().toString(); 
 
     double w4;//=Double.parseDouble(Editcredit1.getText().toString()); 
 
     try { 
 
      w4 = 0; 
 
     } catch (NumberFormatException e) { 
 
      w4 = 3; // your default value 
 
     }

Il choisirait 0 qui est très déroutant pour moi, quelqu'un peut me aider avec elle parce que je l'ai essayé de le résoudre pendant 3 jours.

+0

avec quel texte d'entrée vous avez essayé – Pavan

+0

saisissez le type d'entrée de votre edittext au numéro –

Répondre

1

lorsque vous appelez Double.parseDouble(), une exception peut se produire. Par exemple, si RR a la valeur "123aef", cela ne sera pas analysé et un NumberFormatException sera lancé. Toutefois, si vous définissez w4 = 0 comme dans le second cas, aucune exception ne sera levée puisqu'il s'agit d'une instruction légale.

En outre, il se peut que RR contienne un caractère d'espace blanc, ce qui peut également provoquer une exception. Essayez de consigner la valeur de chaîne RR entourée de certains délimiteurs (comme guillemets) juste pour vérifier que vous avez entré correctement

Espérons que cela aide!

0

Remplacer "," par "." dans l'entrée de l'utilisateur. Si l'utilisateur entre 12,2 il va lancer une erreur. Et votre instruction catch définissant la valeur par défaut. Définissez simplement votre valeur par défaut lorsque vous définissez votre variable. Et informez votre utilisateur lorsqu'une erreur se produit dans l'instruction catch. Vérifiez les commentaires dans le code

String RR=Editcredit1.getText().toString(); 
double w4=0; 
//Set your default values at variable definition. 

try { 
    w4 = Double.parseDouble(RR.replace(",",".")); 
    //replace "," to "." for convert 
} catch (NumberFormatException e) { 
    //there is an error, do not set any variables, warn user show error e.getMessage() or more user friendly, E.g."Please enter numeric value" 
    //maybe stop procedure with return; statement. 
    e.printStackTrace();//or print trace to console 
}