Метод afterTextChanged
не может завершиться сбоем, поскольку он пуст. С другой стороны, метод onTextChanged
, который широко использует Double.parseDouble(String)
, безусловно, может, так как он выдаст NumberFormatException
, если вы дадите ему что-то, что не может быть преобразовано в двойное число. См. документацию .
Чтобы обойти это, можно создать вспомогательный метод, чтобы вы не помещали try-catch
блоки везде и решили либо перехватить исключение и вернуть значение по умолчанию (например, 0D
), либо позволить ему распространяться.
Например:
private double toDouble(String raw) {
double val;
try {
val = Double.parseDouble(raw);
} catch (NumberFormatException e) {
val = 0D;
}
return val;
}
тогда ваш код в onTextChanged
становится
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
Double hDouble = toDouble(hEditText.toString());
Double bDouble = toDouble(bEditText.toString());
Double mDouble = toDouble(mEditText.getText().toString());
Double miDouble = toDouble(miEditText.getText().toString());
lResult.setText("" + Math.sqrt((hDouble * hDouble) + (bDouble * bDouble)));
}