计算器的运算button连续点击2次就会报错,我知道是什么原因,但是就是不知道该怎么写
怎样让它连续点击只有一次起作用?
下面是我的运算代码求高手解答~~~!!!!
butjia.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 1;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 1;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 1;
}
}
});
butjian.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 2;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 2;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 2;
}
}
});
butcheng.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 3;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 3;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 3;
}
}
});
butchu.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
flag = 4;
}
else if(flag == -1){
editText1_value1 = "" + result ;
editText1_value2 = "" ;
flag = 4;
}
else{
int m = calulate();
editText1_value1 = "" + m;
editText1_value2 = "";
flag = 4;
}
}
});
butdengyu.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag == 0){
editText1.setText(editText1_value1);
}else{
calulate();
}
}
});
butce.setOnClickListener(new OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
result = 0;
flag = 0;
editText1.setText("");
}});
}
public int calulate(){
int a,b;
a=Integer.parseInt(editText1_value1);
b=Integer.parseInt(editText1_value2);
switch(flag){
case 1: result = a+b ;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
break;
case 2: result = a-b;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
break;
case 3: result = a*b;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
break;
case 4: if(b==0){
editText1.setText("被除数不能为0");
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
}
else{
result = a/b;
editText1.setText(""+result);
editText1_value1 = "";
editText1_value2 = "";
flag = -1;
}
break;
}
return result;
}
或者设置标志量, 调用calulate之前先检查这个标志量
在a,b转换前加一个判断就可以了,如果editText1.getText().equals"" editText1_value2=0就可以了