Java 如何正确实现计算器擦除按钮?

Java 如何正确实现计算器擦除按钮?,java,for-loop,button,calculator,backspace,Java,For Loop,Button,Calculator,Backspace,我添加了一个退格按钮,但当我单击该按钮时效果良好,但当我单击任何按钮时,它会显示我以前删除的所有数字。还请告诉我如何在calulator中执行多重操作,如(1x2+5=?) 当我点击清除按钮(onClickClear)时,它会工作,但当我点击另一个数字时,它会自动显示我删除的最后一个全部数字 public class MainActivity extends Activity { Button button0, button1, button2, button3, button4, bu

我添加了一个退格按钮,但当我单击该按钮时效果良好,但当我单击任何按钮时,它会显示我以前删除的所有数字。还请告诉我如何在calulator中执行多重操作,如
(1x2+5=?)

当我点击清除按钮(onClickClear)时,它会工作,但当我点击另一个数字时,它会自动显示我删除的最后一个全部数字

public class MainActivity extends Activity {
    Button button0, button1, button2, button3, button4, button5, button6, button7, button8, button9, buttonAdd, buttonSub, buttonMulti, buttonDivide, buttonEqual;
    Button button;
    EditText editText;
    String display = "";
    String result = "";
    String str = "";
    String currentOperator = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        button0 = (Button) findViewById(R.id.button0);
        button9 = (Button) findViewById(R.id.button9);
        button8 = (Button) findViewById(R.id.button8);
        button7 = (Button) findViewById(R.id.button7);
        button6 = (Button) findViewById(R.id.button6);
        button5 = (Button) findViewById(R.id.button5);
        button4 = (Button) findViewById(R.id.button4);
        button3 = (Button) findViewById(R.id.button3);
        button2 = (Button) findViewById(R.id.button2);
        button1 = (Button) findViewById(R.id.button1);
        button = (Button) findViewById(R.id.button);

        buttonAdd = (Button) findViewById(R.id.buttonAdd);
        buttonSub = (Button) findViewById(R.id.buttonSub);
        buttonMulti = (Button) findViewById(R.id.buttonMulti);
        buttonDivide = (Button) findViewById(R.id.buttonDivide);


        editText = (EditText) findViewById(R.id.editText);
        //editText.setText(display);
    }

    public void displayScreen(){
        editText.setText(display);
    }

    public void onClick(View v){
        int id = v.getId();
        if (result != ""){
            display = "";
            currentOperator = "";
            result = "";
            displayScreen();
        }
        switch (id){
            case R.id.button0:
                display += button0.getText();
                displayScreen();
                break;

            case R.id.button1:

                display += button1.getText();
                displayScreen();
                break;

            case R.id.button2:

                display += button2.getText();
                displayScreen();
                break;

            case R.id.button3:

                display += button3.getText();
                displayScreen();
                break;

            case R.id.button4:

                display += button4.getText();
                displayScreen();
                break;

            case R.id.button5:

                display += button5.getText();
                displayScreen();
                break;

            case R.id.button6:

                display += button6.getText();
                displayScreen();
                break;

            case R.id.button7:

                display += button7.getText();
                displayScreen();
                break;

            case R.id.button8:

                display += button8.getText();
                displayScreen();
                break;

            case R.id.button9:

                display += button9.getText();
                displayScreen();
                break;



            default:
                break;


        }
    }


    public void onClickOperator(View v){

        int id = v.getId();
        if(result != "") {
            display = result;
            result = "";
        }

        switch (id){

            case R.id.buttonAdd:

                display += buttonAdd.getText();
                currentOperator = buttonAdd.getText().toString();
                displayScreen();
                break;

            case R.id.buttonSub:

                display += buttonSub.getText();
                currentOperator = buttonSub.getText().toString();
                displayScreen();
                break;

            case R.id.buttonMulti:
                display += buttonMulti.getText();
                currentOperator = buttonMulti.getText().toString();
                displayScreen();
                break;

            case R.id.buttonDivide:
                display += buttonDivide.getText();
                currentOperator = buttonDivide.getText().toString();
                displayScreen();
                break;


            default:
                break;

        }
    }
    // this for delete the digits from the editExt.
    //It works but when i clicked the  then
    //Any number button then it  shows all deleted digits
    public void onClickClear(View v){
        str = editText.getText().toString();
        if (str.length() > 0) {
            str = str.substring(0, str.length()-1);
            editText.setText(str);

        }
    }

    private double calculate(String a, String b, String op){

        switch (op){
            case "+": return Double.valueOf(a) + Double.valueOf(b);
            case "-": return Double.valueOf(a) - Double.valueOf(b);
            case "x": return Double.valueOf(a) * Double.valueOf(b);
            case "/": return Double.valueOf(a) / Double.valueOf(b);

            default:
                return -1;
        }

    }

    public  void onClickEqual(View v){
        String[] operation = display.split(Pattern.quote(currentOperator));
        if(operation.length < 2) return;

        result = String.valueOf(calculate(operation[0],operation[1],currentOperator));
        editText.setText(display + "\n" + String.valueOf(result));

    }


    public void onClear(View v){
        editText.setText(null);
        display = "";
        currentOperator = "";
        result = "";
        displayScreen();
    }

}
公共类MainActivity扩展活动{
按钮按钮0、按钮1、按钮2、按钮3、按钮4、按钮5、按钮6、按钮7、按钮8、按钮9、按钮ADD、按钮NB、按钮MULTI、按钮DIVIDE、按钮QUAL;
按钮;
编辑文本编辑文本;
字符串显示=”;
字符串结果=”;
字符串str=“”;
字符串运算符=”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.activity_main);
button0=(Button)findViewById(R.id.button0);
button9=(按钮)findViewById(R.id.button9);
button8=(按钮)findViewById(R.id.button8);
button7=(按钮)findViewById(R.id.button7);
button6=(按钮)findViewById(R.id.button6);
button5=(按钮)findViewById(R.id.button5);
button4=(按钮)findViewById(R.id.button4);
button3=(按钮)findViewById(R.id.button3);
button2=(按钮)findViewById(R.id.button2);
button1=(按钮)findViewById(R.id.button1);
按钮=(按钮)findViewById(R.id.button);
ButtonAd=(按钮)findViewById(R.id.ButtonAd);
buttonSub=(按钮)findViewById(R.id.buttonSub);
buttonMulti=(按钮)findViewById(R.id.buttonMulti);
buttonDivide=(按钮)findViewById(R.id.buttonDivide);
editText=(editText)findViewById(R.id.editText);
//editText.setText(显示);
}
公共无效显示屏幕(){
editText.setText(显示);
}
公共void onClick(视图v){
int id=v.getId();
如果(结果!=“”){
显示=”;
currentOperator=“”;
结果=”;
显示屏();
}
开关(id){
案例R.id.button0:
display+=按钮0.getText();
显示屏();
打破
案例R.id.button1:
display+=按钮1.getText();
显示屏();
打破
案例R.id.按钮2:
display+=按钮2.getText();
显示屏();
打破
外壳R.id.按钮3:
display+=按钮3.getText();
显示屏();
打破
外壳R.id.按钮4:
display+=按钮4.getText();
显示屏();
打破
外壳R.id.按钮5:
display+=按钮5.getText();
显示屏();
打破
外壳R.id.按钮6:
display+=按钮6.getText();
显示屏();
打破
外壳R.id.按钮7:
display+=按钮7.getText();
显示屏();
打破
外壳R.id.按钮8:
display+=按钮8.getText();
显示屏();
打破
外壳R.id.按钮9:
display+=按钮9.getText();
显示屏();
打破
违约:
打破
}
}
公共void onclick操作符(视图v){
int id=v.getId();
如果(结果!=“”){
显示=结果;
结果=”;
}
开关(id){
案例R.id.按钮D:
display+=buttonad.getText();
currentOperator=ButtonAd.getText().toString();
显示屏();
打破
案例R.id.buttonSub:
display+=buttonSub.getText();
currentOperator=buttonSub.getText().toString();
显示屏();
打破
案例R.id.Button多个:
display+=buttonMulti.getText();
currentOperator=buttonMulti.getText().toString();
显示屏();
打破
案例R.id.按钮提供:
display+=按钮divide.getText();
currentOperator=buttonDivide.getText().toString();
显示屏();
打破
违约:
打破
}
}
//此选项用于从编辑文本中删除数字。
//它可以工作,但当我点击
//任意数字按钮,然后显示所有删除的数字
清除公共空间(视图v){
str=editText.getText().toString();
如果(str.length()>0){
str=str.substring(0,str.length()-1);
editText.setText(str);
}
}
私有双计算(字符串a、字符串b、字符串op){
开关(op){
案例“+”:返回Double.valueOf(a)+Double.valueOf(b);
案例“-”:返回Double.valueOf(a)-Double.valueOf(b);
案例“x”:返回双倍价值(a)*双倍价值(b);
case“/:返回Double.valueOf(a)/Double.valueOf(b);
违约:
返回-1;
}
}
公共空间(视图五){
String[]operation=display.split(Pattern.quote(currentOperator));
如果(操作长度<2)返回;
结果=字符串.valueOf(计算(操作[0],操作[1],currentOperator));
editText.setText(display+“\n”+String.valueOf(result));
}
清理后的公共空间(视图v){
editText.setText(空);
显示=”;
电流运算符
 public void onClickClear(View v)
 {
     editText.getText().clear();
     display = "";
 }
 public void onClickClear(View v)
 {
     display = "";
     editText.setText(display);
 }