当我在没有输入数据的情况下点击我的程序中的按钮时,它同时显示两个错误(我在下面的编号中突出显示)。在这里,我需要一次只得到一个错误,我的意思是当它为空时它已显示适当的一个。服务相反..
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(v==findViewById(R.id.button1)) {
et1 = (EditText) findViewById(R.id.editText1);
if(et1.getText()!=null ) {
try {
radius = Double.valueOf(et1.getText().toString());
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Please enter correct value", Toast.LENGTH_SHORT).show();
}
}
if(radius==0.0) {
Toast.makeText(getApplicationContext(), "Value cannot be 0", Toast.LENGTH_SHORT).show();
}
try {
output = (double) Math.round(Math.PI * radius * radius);
String s = Double.toString(output);
tv1.setText(s);
}
catch (Exception e) {
Toast.makeText(getApplicationContext(), "Please enter correct value", Toast.LENGTH_SHORT).show();
}
}
}
});
答案 0 :(得分:1)
不要让事情变得更加复杂。您可以确保在没有任何try / catch块的情况下输入了正确的值。可能的方法:
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Pattern p = Pattern.compile("([0-9]*)");
if (et1.getText().toString().trim().length() > 0) {
Matcher m = p.matcher(et1.getText().toString().trim());
if (m.matches()) {
radius = Double.valueOf(et1.getText().toString());
output = (double) Math.round(Math.PI * radius
* radius);
tv1.setText(Double.toString(output));
} else
Toast.makeText(getApplicationContext(),
"incorrect value", Toast.LENGTH_SHORT)
.show();
} else
Toast.makeText(getApplicationContext(),
"input is empty", Toast.LENGTH_SHORT).show();
break;
default:
}
}
});
在上面的代码中,您可以检查是否输入了任何文本。第二个 if 使用java正则表达式检查输入是否为数字。满足这两个要求时,您可以确保正确计算输出。
BTW,使用switch-case是一种更好的点击侦听器方法