实验三有没有为这么个错误犯愁呢?当我不输入计算数据,直接点击计算按钮…
问题代码
class cmomputeListened implements OnClickListener {
int num;
float num1,num2;
public cmomputeListened(int i) {
num = i;
}
@Override
public void onClick(View v) {
num1 = Float.valueOf(edit_num1.getText().toString()).intValue();
num2 = Float.valueOf(edit_num2.getText().toString()).intValue();
if(num == 0) {
edit_result.setText(String.valueOf(num1 + num2));
}else if(num == 1) {
edit_result.setText(String.valueOf(num1 - num2));
}else if (num == 2) {
edit_result.setText(String.valueOf(num1 * num2));
}else if(num == 3){
if(num2 == 0) {
Toast.makeText(MainActivity.this, "除数不能为0", Toast.LENGTH_SHORT).show();
}else {
edit_result.setText(String.valueOf(num1 / num2));
}
}else {
edit_num1.setText("");
edit_num2.setText("");
edit_result.setText("");
}
}
}
运行界面
直接点击计算按钮,出现以下错误:
原因
原因是我们在点击事件执行开始,没有对数值做判空处理,以至于传进来个空的,转换数值类型失败。所以所以,我们得先来个判空处理。
class cmomputeListened implements OnClickListener {
int num;
float num1,num2;
public cmomputeListened(int i) {
num = i;
}
@Override
public void onClick(View v) {
//判空
if(TextUtils.isEmpty(edit_num1.getText().toString())) {
Toast.makeText(MainActivity.this, "运算数不能空!", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(edit_num2.getText().toString())) {
Toast.makeText(MainActivity.this, "运算数不能为空!", Toast.LENGTH_SHORT).show();
return;
}
num1 = Float.valueOf(edit_num1.getText().toString()).intValue();
num2 = Float.valueOf(edit_num2.getText().toString()).intValue();
if(num == 0) {
edit_result.setText(String.valueOf(num1 + num2));
}else if(num == 1) {
edit_result.setText(String.valueOf(num1 - num2));
}else if (num == 2) {
edit_result.setText(String.valueOf(num1 * num2));
}else if(num == 3){
if(num2 == 0) {
Toast.makeText(MainActivity.this, "除数不能为0", Toast.LENGTH_SHORT).show();
}else {
edit_result.setText(String.valueOf(num1 / num2));
}
}else {
edit_num1.setText("");
edit_num2.setText("");
edit_result.setText("");
}
}
}
总结
就先这么解决吧,难的咱也不会…