计算器的运算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;
      }