您好我是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++;
}
}
例外是:
java.lang.NumberFormatException: unable to parse ' 600' as integer
答案 0 :(得分:5)
首先从数字中删除任何前导或尾随空格:
int inputNumber = Integer.parseInt(editText.getText().toString().trim());
或者,您可以使用正则表达式从字符串中删除所有非数字字符:
String cleanInput = editText.getText().toString().replaceAll("[^\\d]", "");
int inputNumber = Integer.parseInt(cleanInput);
虽然如果非数字输入字符出现问题,您可能希望将EditText限制为仅数字。见this question。它说要将以下属性添加到EditText:
android:inputType="number"
答案 1 :(得分:1)
整数中有空格。
将以下属性添加到xml中的EditText以仅允许输入整数:
android:inputType="number"
答案 2 :(得分:0)
试试这个..
final int i=Integer.parseInt(e1.toString().trim());
因为在该号码之前有一个空格,请参阅' 600'
,这就是错误的原因..
希望这会有所帮助..
答案 3 :(得分:0)
使用此代码
final int f = -1; // or other invalid value
if (edittext.getText().toString().length() > 0)
f = Integer.parseInt(edittext.getText().toString());
答案 4 :(得分:0)
在edittext xml layout上使用此行,
android:inputType="number"