从Android中的EditText中避免解析错误

对于stackoverflow社区,我创建了这个方法来将一些EditText字段转换为双精度数。 我为了避免解析错误而专门添加了if语句,因为我知道我的几个EditText字段将留空。 但是,它们仍然在运行时继续运行。 有没有人知道避免解析空白字段的正确方法? 非常感谢你。

private double Doublify(EditText editText){ if(!(editText.getText().equals(null))){ return Double.parseDouble(editText.getText().toString()); } return 0; } 

你为什么不尝试这样的东西?

 private double Doublify(EditText editText) { try { Double double = Double.parseDouble(editText.getText().toString()); } catch (NumberFormatException e) { return 0; } return double; } 

编辑:注意,这是未经测试的……这里没有编译器。 :’(

因为如果字符串为null,它会抛出NumberFormatException,只是捕获exception,如果它为null或格式不正确则返回0。

首先,您的文本不会为空。 它将是一个空字符串 – 这是两个不同的东西。 您也不使用equals来测试null,只需使用==

但是,检查错误字符串的正确方法(也可能是有人输入文本!)只是处理exception:

 private double Doublify(EditText editText){ try { return Double.parseDouble(editText.getText().toString()); } catch (NumberFormatException e) { return 0; } } 

如果您怀疑editText的文本可能为null,您还可以捕获NullPointerException

 private double Doublify(EditText editText) { if(editText.getText() != null && !"".equalsIgnoreCase(editText.getText().toString)) { return Double.parseDouble(editText.getText().toString()); } return 0; } 

或者用try catch块包围它,并在有exception时返回0。

 private double Doublify(EditText editText){ try{ return Double.parseDouble(editText.getText().toString()); }catch(Exception e){ return 0; } }