解析字符串加倍时如何解决此错误?

时间:2013-09-26 13:46:02

标签: android android-edittext string-parsing

我试图从EditText获取一个String并解析为double。但是我收到了错误。

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 个答案:

答案 0 :(得分:1)

我明白了:

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

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

感谢您的回答。

答案 1 :(得分: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);   
 }     

答案 2 :(得分:0)

试试这个..

                String controle = "";
                controle = etCustoNovoCheckin.getText().toString();
                if(controle.trim().length()>0){
                custo = Double.parseDouble(controle); 
                } 
                else {
                custo = 0.0;  
                }  

答案 3 :(得分:0)

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

  android:inputType="number"

你没有陷入这种“麻烦”