试图在java GUI中构建一个计算器

时间:2015-03-13 17:51:37

标签: java user-interface math calculator

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

私有类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("");
        }

    }

}

2 个答案:

答案 0 :(得分:1)

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解析了一下,但你没有为tempValue

做这件事

答案 1 :(得分:0)

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