Java中的计算器小程序的奇怪错误

时间:2013-10-30 05:12:03

标签: java applet calculator

我正在制作一个计算器applet并以大多数工作的方式实现它,如果你有多个操作符,计算器会评估你到目前为止所做的事情,例如“4 + 4 + 4 =”将在第二个+被击中后显示8,然后一次输入是12。

我遇到了一个奇怪的错误,当我做了两位数字时,例如“12 + 12 + 12”,它会在第二个+被击中后显示24,但是然后我点击1,然后是2, 1将消失,2将被注册为正在添加的内容,使表达式26而不是36。

我在下面包含一些代码,一个显示我的评估方法,另一个显示我的方法,当+被击中时,我希望这是足够的信息。 opCounter检查是否有多于1个操作数,如果有,则立即调用eval函数进行第一次加/减/等。

我一直试图弄清楚这个问题有多长时间无法解决。 f1跟踪一个浮点数,f2跟踪另一个浮点数。 tf是文本框架。

if(arg0.getSource()==bplus){

        if(parentheses == false){
        opCounter++;

        if(opCounter < 2){
            f1 = Float.parseFloat(tf.getText());
            tf.setText(""); 
        }else{
            eval();
        }
        operator= 1;    

        }else{
                tf.setText(tf.getText() + "+");
                parenthArg += "+";
                opCounter--;
        }


    }

public void eval(){

    if(parentheses == false){

    f2 = Float.parseFloat(tf.getText());

    if(operator == 1){
        tf.setText(Float.toString(f1+f2));
        f1 = f1+f2;
    }
    if(operator == 2){
        tf.setText(Float.toString(f1-f2));
        f1 = f1-f2;
    }
    if(operator == 3){
        tf.setText(Float.toString(f1*f2));
        f1 = f1*f2;
    }
    if(operator == 4){
        tf.setText(Float.toString(f1/f2));
        f1 = f1/f2;
    }


    operator = 0;
    System.out.println("f1: " + f1);
    System.out.println("f2: " + f2);

}

0 个答案:

没有答案