0

こんにちは私は Android で非常に新しいです。EditText から整数値を取得しようとしていますが、文字列を整数に解析しているときに NumberFormatException が発生しました。このエラーから抜け出すのを手伝ってください。前もって感謝します。

プログラムは次のとおりです。

int day,month,year;
    EditText expense,ammount;
    String[] exp=new String[10];
    int[] amt=new int[10];
    int count=0;



    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Calendar cal=Calendar.getInstance();
        day=cal.get(Calendar.DAY_OF_MONTH);
        month=cal.get(Calendar.MONTH)+1;
        year=cal.get(Calendar.YEAR);


        final TextView txtdate=(TextView)findViewById(R.id.txtdate);

        expense=(EditText)findViewById(R.id.exp);
        ammount=(EditText)findViewById(R.id.amnt);


        final Button add=(Button)findViewById(R.id.btnadd);
        final Button cancel=(Button)findViewById(R.id.btncancel);
        final Button done=(Button)findViewById(R.id.btndone);



        txtdate.setText(day+"/"+month+"/"+year);

        add.setOnClickListener(new OnClickListener() {
            public void onClick(final View v) {

            getval(); 
            }

        });
        cancel.setOnClickListener(new OnClickListener() {
            public void onClick(final View v) {

                clean();



            }

        });
        done.setOnClickListener(new OnClickListener() {
            public void onClick(final View v) {

                total();
                getval();    
                clean();

       final TextView tv=(TextView)findViewById(R.id.textView1);
       tv.setText(Integer.toString(total()));
            }

            private int total() {
                int total = 0;

                // TODO Auto-generated method stub
                for(int i=0;i<=count;i++)
                {

                    total+=amt[i];

                }
                return total;

            }

        });

    }
    protected void clean() {
        // TODO Auto-generated method stub
        expense.setText(" ");
        ammount.setText(" ");

    }
    protected void getval() {
        // TODO Auto-generated method stub
         final Editable e2=expense.getText();
         final Editable e1=ammount.getText();

         final int i=Integer.parseInt(e1.toString());
         amt[count]=i;
         exp[count]=e2.toString();
         System.out.println(amt[count]);
         System.out.println(exp[count]);
         count++;

    }
}

例外は次のとおりです。

java.lang.NumberFormatException: unable to parse ' 600' as integer
4

5 に答える 5

5

最初に数値から先頭または末尾のスペースを削除します。

int inputNumber = Integer.parseInt(editText.getText().toString().trim());

または、正規表現を使用して、文字列から数字以外のすべての文字を削除できます。

String cleanInput = editText.getText().toString().replaceAll("[^\\d]", "");
int inputNumber = Integer.parseInt(cleanInput);

ただし、数値以外の入力文字が問題になる場合は、おそらく EditText を数値のみに制限することをお勧めします。この質問を参照してください。次の属性を EditText に追加するように指示されています。

android:inputType="number"
于 2013-10-11T04:45:48.637 に答える
0

edittext xml レイアウトでこの行を使用します。

android:inputType="number"
于 2013-10-11T04:46:41.373 に答える