任何人都可以看看下面的代码,并指出明显的错误是什么?当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));
}
}}
答案 0 :(得分:0)
将您的代码更改为:
if(TextUtils.isEmpty(editText1.getText()))
{
editText1.setError("please input text");
}
if(TextUtils.isEmpty(editText2.getText()))
{
editText2.setError("please input text");
}
TextUtils.isEmpty(str)
做的是返回str == null || str.length() == 0
。
答案 1 :(得分:0)
问题在于您尝试将""
解析为数字(特别是双精度数)。您正在检查空值,但即使设置了错误,您仍然在尝试解析它。您需要将new Double()
语句放在try-catch块中,并捕获尝试解析无效输入时发生的异常。这样,即使用户输入的随机字符串也是不可解析的双重文件,它也是安全的。
答案 2 :(得分:0)
试试这个,
只需用这些代替你的陈述......它就可以了。
if ((editText1.getText().toString()).equals(null))
if ((editText2.getText().toString()).equals(null))
答案 3 :(得分:0)
Just Do
if(editText1.getText().toString().equals(null){//your code here}
if(editText2.getText().toString().equals(null){//your code here}