Как избежать ошибки синтаксического анализа из EditText в Android - PullRequest
2 голосов
/ 20 января 2011

Сообществу stackoverflow, Я создал этот метод, чтобы превратить некоторые поля EditText в двойные. Я добавил оператор if специально для того, чтобы избежать ошибки синтаксического анализа, поскольку я знаю, что некоторые из моих полей EditText останутся пустыми Тем не менее, они все еще продолжают приходить во время выполнения. Кто-нибудь знает правильный способ избежать разбора пустых полей? Большое спасибо.

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

Ответы [ 4 ]

3 голосов
/ 20 января 2011

Прежде всего, ваш текст не будет нулевым. Это будет пустая строка - это две разные вещи. Вы также не используете equals для проверки на ноль, вы просто используете ==.

Тем не менее, правильный способ проверки плохих строк (также может быть кто-то вводит текст!) - просто обработать исключение:

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

Вы также можете поймать NullPointerException, если вы подозреваете, что текст editText может быть нулевым.

3 голосов
/ 20 января 2011

Почему бы тебе не попробовать что-нибудь подобное?

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

РЕДАКТИРОВАТЬ: Обратите внимание, это не проверено ... здесь нет компилятора. : '(

Поскольку он генерирует исключение NumberFormatException, если строка имеет значение null, просто перехватите исключение, чтобы вернуть 0, если оно равно NULL или неправильно отформатировано.

1 голос
/ 21 января 2011
private double Doublify(EditText editText){
 try{
   return Double.parseDouble(editText.getText().toString());
  }catch(Exception e){
  return 0;
}
 }
1 голос
/ 20 января 2011
private double Doublify(EditText editText) { 

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

или окружите его блоком try catch и верните 0 в случае исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...