2011-01-20 4 views
2

stackoverflow 커뮤니티에 일부 EditText 필드를 이중으로 설정하려면이 메서드를 만들었습니다. 필자는 EditText 필드 중 몇 개를 공백으로 남겨두기 때문에 구문 분석 오류를 피하기 위해 if 문을 특별히 추가했습니다. 그러나, 그들은 여전히 ​​런타임에 계속오고있다. 아무도 빈 필드를 구문 분석하지 않도록 올바른 방법을 알고 있습니까? 고맙습니다.안드로이드의 EditText에서 구문 분석 오류 방지

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 : 메모가 없습니다 ... 컴파일러가 없습니다. : '(

문자열이 null의 경우는 경우는 NumberFormatException을 발생하기 때문에, 그냥 널 (null) 나 올바르게 포맷되지 않은 경우 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; 
} 

는 시도의 catch 블록과 그것을 둘러싸고 예외가있는 경우 0을 반환하거나.

+0

는 오류의 이름을 변경했습니다. 이제 NumberFormatException이 발생했습니다. –

+0

그러면 내 솔루션과 다른 사용자가 제안한 솔루션이 결합됩니다. – franklins

+2

' "".equalsIgnoreCase (editText.getText(). toString)'? 대부분의 복잡한 상황 체크 :)'editText.getText() .length() == 0'? 왜 빈 문자열에서 대소 문자를 검사해야합니까? – EboMike

3

우선 텍스트는 null이 아닙니다. 빈 문자열이 될 것입니다. 두 가지가 있습니다. null을 테스트하기 위해 equals을 사용하지 않는 경우 == 만 사용하면됩니다. 당신이 EDITTEXT의 텍스트가 null이 될 수 의심되는 경우

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

또한 NullPointerException을 잡을 수 :

그러나, 적절한 방법 (! 또한 누군가 텍스트 입력 수) 만 예외를 처리하는 나쁜 문자열을 확인 .

+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; 
} 
}