无法从EditText获取整数

use*_*524 0 android

您好我是android中的新手我试图从EditText获取整数值,但是当我将字符串解析为Integer时,我得到了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++;

    }
}
Run Code Online (Sandbox Code Playgroud)

例外情况是:

java.lang.NumberFormatException: unable to parse ' 600' as integer
Run Code Online (Sandbox Code Playgroud)

Ale*_* A. 5

首先从数字中删除任何前导或尾随空格:

int inputNumber = Integer.parseInt(editText.getText().toString().trim());
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用正则表达式从字符串中删除所有非数字字符:

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

虽然如果非数字输入字符出现问题,您可能希望将EditText限制为仅数字.看到这个问题.它说要将以下属性添加到EditText:

android:inputType="number"
Run Code Online (Sandbox Code Playgroud)