0

任何人都可以看看下面的代码并指出明显的问题吗?editText程序在留空时会出错,并且只有在所有信息都存在时才进行计算。目前程序在缺少文本时崩溃,这是为什么呢?

EditText editText1, editText2;
double numA, numB, numC;
TextView answer;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calc);

    editText1 = (EditText) findViewById(R.id.editText1);
    editText2 = (EditText) findViewById(R.id.editText2);
}

public void btnClick(View v)
{
    if(editText1.getText().length()==0)
    {
        editText1.setError("please input text"); 
    }{
        if  (editText2.getText().length()==0)
            {
                editText2.setError("please input text");
            }

    numA = new Double(editText1.getText().toString());
    numB = new Double(editText2.getText().toString());

    numC=(numA + numB); answer.setText(Double.toString(numC));
    }
}}
4

4 回答 4

0

问题是你试图解析""成一个数字(特别是双精度数)。您正在检查空值,但即使您设置了错误,您仍在尝试解析它。您需要将new Double()语句放在 try-catch 块中,并捕获在尝试解析无效输入时发生的异常。这样,即使用户输入的随机文本字符串也不能解析为双精度,它也是安全的。

于 2012-06-05T17:30:03.893 回答
0

尝试这个,

只需用这些替换您的陈述......它就会起作用。

if ((editText1.getText().toString()).equals(null))


if ((editText2.getText().toString()).equals(null))
于 2012-06-05T18:34:46.827 回答
0

做就是了

if(editText1.getText().toString().equals(null){//your code here}
if(editText2.getText().toString().equals(null){//your code here}
于 2012-06-05T20:30:58.873 回答
0

将您的代码更改为:

if(TextUtils.isEmpty(editText1.getText()))
{
    editText1.setError("please input text"); 
}
if(TextUtils.isEmpty(editText2.getText()))
{
    editText2.setError("please input text"); 
}

什么TextUtils.isEmpty(str)是 return str == null || str.length() == 0

于 2012-06-05T17:27:16.420 回答