尝试在 java GUI 中构建计算器

Trying to build a calculator in java GUI

在这里,我只是尝试在按下 (=) 按钮时将第一个数字添加到第二个数字。按下 (=) 按钮时,此代码仅显示屏幕上的第二个数字。一旦这个工作,我希望它与不同的算术运算符按钮一起工作,例如(+ - * /)。如果你能弄清楚我的代码,请帮忙。

private class TheHandler 实现 ActionListener{

    public void actionPerformed(ActionEvent e) {

        //add values to buttons
        String num = "";
        if(e.getSource()==btn[0]){
            num = "7";
        }else if(e.getSource()==btn[1]){
            num = "8";
        }else if(e.getSource()==btn[2]){
            num = "9";
        }else if(e.getSource()==btn[5]){
            num = "4";
        }else if(e.getSource()==btn[6]){
            num = "5";
        }else if(e.getSource()==btn[7]){
            num = "6";
        }else if(e.getSource()==btn[10]){
            num = "1";
        }else if(e.getSource()==btn[11]){
            num = "2";
        }else if(e.getSource()==btn[12]){
            num = "3";
        }else if(e.getSource()==btn[15]){               
            num = "0";
        }

        //set the values to the text field          
        if (tDisplay.getText().equals("0"))
            tDisplay.setText(num);
        else
            tDisplay.setText(tDisplay.getText()+num);

        //temporary values to be stored when arithmetic operators are pressed
        double tempValue =0;
        double tempValue2 =0;
        double equalsTo=0;

        //if = button is pressed
        if(e.getSource()==btn[19]){
            tempValue2 = Double.parseDouble(tDisplay.getText());
            equalsTo = tempValue+tempValue2;
            tDisplay.setText(String.valueOf(equalsTo));
        }

        //if + button is pressed
        if(e.getSource()==btn[3]){
            tempValue = Double.parseDouble(tDisplay.getText());
            tDisplay.setText("");
        }

    }

}
if(e.getSource()==btn[19]){
     tempValue2 = Double.parseDouble(tDisplay.getText());
     equalsTo = tempValue+tempValue2;
     tDisplay.setText(String.valueOf(equalsTo));
}

正在按照您的指示去做。

tempValue2 保持为 0 因为

double tempValue =0;

所以总和总是 tempValue2 因为 tempValue2 + 0 == tempValue2

你为 tempValue2 parseDouble 但你没有为 tempValue

这样做

您似乎已经声明了局部变量来存储您的中间结果,因此每次执行您的操作时,这些变量都会重新初始化为 0。相反,您可能希望它们是 class 属性,因此变量中的值可以 "survive" 多次调用 actionPerformed 方法。