2013-05-24 4 views
7

私はすでにこのエラーの原因を知っていますが、ユーザーがダイアログボックスに何も入力せずにヒットした場合の対処方法がわかりません文字列をintにパースするボタン空文字列を解析してintにすることはできないため、エラーが発生します。私はこれを行う方法についていくつかの研究を行ったが、うまくいく結果が得られていない。java.lang.NumberFormatException:Invalid in:android in

問題:残りのコードを実行しようとする前に、ダイアログボックスにテキストが含まれているかどうかを確認する方法を確認します。

答えて

10

いくつかのコードでは、構文に役立つだろうが、基本的に

if ("".equals(text) // where text is the text that you get from an EditText or wherever you get it 
{ // give message to enter valid text; } 

また、あなたはtry/catchで囲むことができるとはNumberFormatExceptionをキャッチマイクラッシュするアプリケーション。同様に、例外が発生回答

試みのコードを入れSimple-ある{}

キャッチ()

ブロックこのコードは私のために機能します。

public void setAge(String age) { 

    final Calendar c = Calendar.getInstance(); 
    int yearCurrent = c.get(Calendar.YEAR); 
    try { 
     int yearPrev = (int) Integer.parseInt(age.substring(0, 4));//this line was causing the error 
     int ageYear=yearCurrent-yearPrev; 
     ageUser="Age : "+Integer.toString(ageYear); 
    } 
    catch(NumberFormatException numberEx) { 
     System.out.print(numberEx); 
    } 


} 
1

問題:残りのコードを実行しようとする前に、ダイアログボックスにテキストが含まれているかどうかを確認する方法を確認しますか?

解決策:if声明。

int parseToInt(String maybeInt, int defaultValue){ 
    if (maybeInt == null) return defaultValue; 
    maybeInt = maybeInt.trim(); 
    if (maybeInt.isEmpty()) return defaultValue; 
    return Integer.parseInt(maybeInt); 
} 

あなたは余分な依存関係を割くことができればそれはまた、Unicodeを扱うので、私は、代わりに、トリム/のisEmptyのStringUtils.isBlankを使用するように、共通ラングのStringUtilsに引くと思います。その後、同じエラーが引き起こしていた適切なメッセージ

1
String text = editText.getText().toString(); 
    if(!text.equals("") && text.matches("^\\d+$")){ 
     cast to int 
    } 
0

を印刷