2011-01-20 2 views
2

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

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

ответ

3

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

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

EDIT: Обратите внимание, что это непроверено ... нет компилятора здесь. : '(

Поскольку бросает NumberFormatException если строка имеет нулевое значение, просто поймать исключение для возврата 0, если это нуль или не правильно отформатирован

+2

+1 от меня ... если вы не идете за невоспетым героем :) – EboMike

1
private double Doublify(EditText editText) { 

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

или окружить его попробовать поймать блока и возвращает 0, когда есть исключение.

+0

Это, кажется, только изменили название ошибки. Теперь его исключение NumberFormatException. –

+0

затем объединить мое решение и другое, предложенное другими ... – franklins

+2

'" ".equalsIgnoreCase (editText.getText(). ToString)'? Самая сложная проверка когда-либо :) Что бы ни случилось с 'editText.getText() .length() == 0'? Зачем вам даже нужно проверять случай на пустой строке? – EboMike

3

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

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

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

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

+0

Ха, избили меня, как 15 секунд. : P – kcoppock

+0

У вас все еще есть принятый ответ ... вам повезло :) – EboMike

+0

Забавно, как это работает. : P У вас есть больше информации и еще одна строка кода. – kcoppock

1
private double Doublify(EditText editText){ 
try{ 
    return Double.parseDouble(editText.getText().toString()); 
    }catch(Exception e){ 
    return 0; 
} 
} 
Смежные вопросы