8

このエラーの原因はすでにわかっていますが、ユーザーがダイアログ ボックスに何も入力せず、文字列を int に解析するボタンを押した場合の処理​​方法がわかりません。空の文字列を int に解析できないため、エラーがスローされます。これを行う方法についていくつかの調査を行いましたが、うまくいく満足のいく結果は見つかりませんでした。

問題: 残りのコードを実行する前に、ダイアログ ボックスにテキストがあるかどうかを確認するにはどうすればよいですか。

4

4 に答える 4

12

一部のコードは構文に役立ちますが、基本的には

 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/catchnumberFormatException をキャッチし、適切なメッセージを出力することもできます

于 2013-05-24T01:36:25.600 に答える
1
   String text = editText.getText().toString(); 
   if(!text.equals("") && text.matches("^\\d+$")){
       cast to int
    }
于 2013-05-24T01:47:29.853 に答える
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);
 }

余分な依存関係を回避できる場合は、Common Lang StringUtils をプルして、trim/isEmpty の代わりに StringUtils.isBlank を使用します。これは Unicode も処理するためです。

于 2013-05-24T01:35:28.387 に答える
0

同じエラーが原因でアプリケーションがクラッシュしました。 答えは簡単です - コードを

試す{ }

キャッチ()

このコード snip.This Works のように、Exception を引き起こすブロック。

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


}
于 2015-11-14T06:53:50.747 に答える