0

これが私のコードで、edittext入力を動的にチェックしています。

al_e.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            String al_s=s.toString().trim();
            if((Float.parseFloat(al_s)<15)|(Float.parseFloat(al_s)>50)|al_s.equals("")){
                invalid=1;
                al_s="";
                //Toast.makeText(getApplicationContext(),"Please enter a valid input\nRange [15mm,50mm]", Toast.LENGTH_SHORT).show();
                al_e.setError("Please enter a valid input\nRange [15mm,50mm]");
            }else{
                al=Float.parseFloat(al_s);
            }
        }
    });

しかし、edittextにテキストを入力し、バックスペースを使用して番号をクリアすると、次の例外が発生します

02-10 09:43:37.186: E/AndroidRuntime(434): FATAL EXCEPTION: main
02-10 09:43:37.186: E/AndroidRuntime(434): java.lang.NumberFormatException: 
02-10 09:43:37.186: E/AndroidRuntime(434):  at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305)
02-10 09:43:37.186: E/AndroidRuntime(434):  at java.lang.Float.parseFloat(Float.java:323)
02-10 09:43:37.186: E/AndroidRuntime(434):  at com.example.iolcalci.Second$4.onTextChanged(Second.java:208)

フォーラムで同様の問題を検索しましたが、見つかりませんでした。これに関するヘルプ。私はAndroid開発の初心者です。

4

1 に答える 1

2

空の文字列に対して parseFloat を使用することはできません。そのため、NumberFormatException が発生しています。

代わりに次のようなことをしてください。

try {
    float num = Float.parseFloat(al_s);
    if (num < 15 || num > 50) {
        // set invalid...
    } else {
        al = num;
    }
} catch (NumberFormatException e) {
    // set invalid...
}

al_s.equals("")また、空の文字列をチェックしようとしても、条件の最後ではなく最初のテストである必要があることに注意してください。それ以外の場合、文字列はテストの前に解析され、NumberFormatException.

于 2013-02-10T05:33:59.213 に答える