1

我创建了用户可以在其中输入数字的编辑文本。在我的应用程序中,用户可以通过单击提交按钮来提交值。(注意:最初我在代码中使用 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 中输入任何值并且只填写第 2 和第 3 并提交,那么 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)

请澄清我的疑问。

4

4 回答 4

7

您需要EditText在将其转换为数字之前检查。

if( !editText1.getText().toString().equals("") && editText1.getText().toString().length() > 0 )
{
    // Get String
    Integer.parseInt(editText1.getText().toString());
}
于 2012-09-11T05:49:53.053 回答
1

您必须检查编辑文本的条件不为空或编辑文本中没有值,如下所示。

EditText 的条件不是空白。

if(editText1.getText().toString().length() != 0)
{
    // Get String
    Integer.parseInt(editText1.getText().toString());
}
于 2012-09-11T05:45:07.777 回答
0

Integer 类型中的方法 valueOf(String) 不适用于参数(可编辑)

意味着它正在寻找一个字符串参数,但得到一个Editable

尝试x=Integer.valueOf(editText.getText().toString());

关于异常:

用 包围您的代码Try & Catch,或者在解析整数之前进行 Null 检查。

于 2012-09-11T05:48:05.753 回答
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){}
于 2012-09-11T05:48:10.217 回答