clear_flag运用问题
public void onClick(View v) {
String str = editText.getText().toString();
Button btn = (Button) v;
switch (v.getId()){
case R.id.button3:
case R.id.button4:
case R.id.button8:
case R.id.button12:
str = str + " " + btn.getText() + " ";
break;
case R.id.button1:
str = "";
break;
case R.id.button2:
str = btnDelate(str);
break;
case R.id.button16:
str = btnEqual(str);
break;
case R.id.button18:
if( ! str.endsWith("."))
str += btn.getText();
break;
default:
if(clear_flag) str = "";
clear_flag = false;
str += btn.getText();
}
editText.setText(str);
}
private String btnEqual(String str) {
clear_flag = true;
if(str==null || str.endsWith(" ") || str.equals(""))
return str;
if(str.contains(" ")){
int startSpace = str.indexOf(" ");
int endSpace = str.lastIndexOf(" ");
if(startSpace == 0){
str = "";
return str;
}
if( endSpace-startSpace > 2 ){
Toast.makeText(this,"不支持连缀运算",Toast.LENGTH_SHORT).show();
str = "";
return str;
}
else{
char operator = str.charAt(startSpace + 1);
double Fir = Double.parseDouble(str.substring(0,startSpace));
double Sec = Double.parseDouble(str.substring(endSpace+1));
double result;
int intresult;
switch (operator){
case '+':
result = Fir + Sec;
if(!str.contains(".")) {
intresult = (int) result;
str = intresult + "";
}
else
str = result + "";
break;
case '-':
result = Fir - Sec;
if(!str.contains(".")) {
intresult = (int) result;
str = intresult + "";
}
else
str = result + "";
break;
case '×':
result = Fir * Sec;
if(!str.contains(".")) {
intresult = (int) result;
str = intresult + "";
}
else
str = result + "";
break;
case '÷':
if(Sec != 0d){
result = Fir / Sec;
intresult = (int) result;
if(!str.contains(".") && result%1==0){
str = intresult + "";
}else
str = result + "";
}else
Toast.makeText(this,"除数不可为零!",Toast.LENGTH_SHORT).show();
break;
}
}
}
return str;
}在进行玩“=”运算后能够正常的清空原字符,但是在运算后不重新输入数字而是输入运算符,再接着输入数字时,此时输入框被清空而只剩下最后输入的数字了(比如输入1+1=2然后紧接着输入+号再输入数字时2和+号都没了)