0

我试图从 EditText 获取字符串并解析为双精度。但我遇到了一个错误。

09-26 10:42:41.589: E/AndroidRuntime(17901): FATAL EXCEPTION: main
09-26 10:42:41.589: E/AndroidRuntime(17901): java.lang.NumberFormatException: 
09-26 10:42:41.589: E/AndroidRuntime(17901):    at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267)
09-26 10:42:41.589: E/AndroidRuntime(17901):    at java.lang.Double.parseDouble(Double.java:318)
09-26 10:42:41.589: E/AndroidRuntime(17901):    at br.com.going2.Checkincomercial.NovoCheckinActivity$4.onClick(NovoCheckinActivity.java:219)

代码

String controle = "";
controle = etCustoNovoCheckin.getText().toString();
if( controle == null || controle == ""){
custo = 0.0;
} else {
custo = Double.parseDouble(controle);   
}       
4

4 回答 4

1

我想通了:

                       if( controle.equals(null) || controle.equals("")){
                            custo = 0.0;
                        } else {
                            custo = Double.parseDouble(controle);   
                        } 

错误是我没有使用 .equals 来比较字符串。

感谢您的回答。

于 2013-09-26T13:54:40.980 回答
0

尝试使用以下方法更改您的if陈述:

if( controle == null || controle.trim() == "" || !controle.matches("\d+\.\d+|\d+")).

就像是:

String controle = "";
controle = etCustoNovoCheckin.getText().toString();
if( controle == null || controle.trim() == "" || !controle.matches("\d+\.\d+|\d+")){
 custo = 0.0;
}
 else {
  custo = Double.parseDouble(controle);   
 }     
于 2013-09-26T13:49:39.060 回答
0

如果您的 EditText-Box 应该只支持数字,请设置 EditText-Box 属性。

  android:inputType="number"

你不会陷入这个“麻烦”

于 2013-09-26T13:56:12.123 回答
0

尝试这个..

                String controle = "";
                controle = etCustoNovoCheckin.getText().toString();
                if(controle.trim().length()>0){
                custo = Double.parseDouble(controle); 
                } 
                else {
                custo = 0.0;  
                }  
于 2013-09-26T13:54:24.403 回答