我创建了edittexts,用户可以在其中输入数字。在我的应用程序中,用户可以通过单击提交按钮来提交值。(注意:最初我在代码中使用setText()将所有3个EditTexts设置为“”)提交后,我保留了以下这些行以检索方法中的值。
String st1=editText1.getText().toString();
int tempVal1=Integer.parseInt(st);
String st2=editText2.getText().toString();
int tempVa2=Integer.parseInt(st);
String st3=editText2.getText().toString();
int tempVal3=Integer.parseInt(st);
但是我的问题是,如果用户没有在第一个editText中输入任何值并且只填充第二个和第三个并且提交,那么tempVal1中的值应该是0.但是我得到了例外,因为第一个语句因为没有任何数据。如何避免此异常,并在未填写相应编辑文本中的任何内容时保持tempVal为0?
我还有一个疑问,当我添加此int x=Integer.valueOf(editText.getText());
行时,我收到以下错误。为什么?The method valueOf(String) in the type Integer is not applicable for the arguments (Editable)
请澄清我的疑虑。
答案 0 :(得分:7)
在将其转换为数字之前,您需要先检查EditText
。
if( !editText1.getText().toString().equals("") && editText1.getText().toString().length() > 0 )
{
// Get String
Integer.parseInt(editText1.getText().toString());
}
答案 1 :(得分:1)
您必须检查编辑文本的条件不为空或编辑文本中没有值,如下所示。
EditText的条件不是空白。
if(editText1.getText().toString().length() != 0)
{
// Get String
Integer.parseInt(editText1.getText().toString());
}
答案 2 :(得分:0)
Integer类型中的方法valueOf(String)不适用 参数(可编辑)
表示它正在寻找一个String参数,但得到一个Editable
尝试x=Integer.valueOf(editText.getText().toString());
关于例外:
使用Try & Catch
包围代码,或在解析整数之前执行Null检查。
答案 3 :(得分:0)
您必须获取NumberFormatException,因为String为空,并且空白无法解析为整数。 因此,用0初始化这些变量,并将解析代码放入try catch。如下:
int tempVal1=0;
int tempVal2=0;
int tempVal3=0;
String st1=editText1.getText().toString();
try{
tempVal1=Integer.parseInt(st1);
}
catch(NumberFormatException ex) {}
String st2=editText2.getText().toString();
try{
tempVal2=Integer.parseInt(st2);
}
catch(NumberFormatException ex){}
String st3=editText2.getText().toString();
try{
tempVal3=Integer.parseInt(st3);
}
catch(NumberFormatException ex){}