Java Netbeans计算器执行错误的计算

Java Netbeans计算器执行错误的计算,java,calculator,netbeans-8.2,Java,Calculator,Netbeans 8.2,我目前正在使用NetBeans开发GUI计算器。我的加法运算符运行良好,但对于减法、乘法和除法,它返回错误的值。我认为我的计算逻辑没有问题 运算符返回的值: 减法: 带负号的输入值之和 乘法 0 部门 0 以下是我为操作员提供的按钮和功能: // add button private void btnAddActionPerformed(java.awt.event.ActionEvent evt) { ope

我目前正在使用NetBeans开发GUI计算器。我的加法运算符运行良好,但对于减法、乘法和除法,它返回错误的值。我认为我的计算逻辑没有问题

运算符返回的值:

减法: 带负号的输入值之和

乘法 0

部门 0

以下是我为操作员提供的按钮和功能:

// add button
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
    operator = "+";
    calculation(operator);
} 

// subtract button
private void btnSubtractActionPerformed(java.awt.event.ActionEvent evt) {                                            
    operator = "-";
    calculation(operator);
} 

// multiply button
private void btnMultiplyActionPerformed(java.awt.event.ActionEvent evt) {                                            
    operator = "*";
    calculation(operator);
}

// divide button
private void btnDivideActionPerformed(java.awt.event.ActionEvent evt) {                                          
    operator = "/";
    calculation(operator);
} 

// equals button
private void btnEqualsActionPerformed(java.awt.event.ActionEvent evt) {                                          
    calculation(operator);
    txtInput.setText(String.valueOf(accum2));
}


// calculation method
public void calculation(String operator){
    if(operator.equals("+")) {
        accum2 += accum1;
        accum1 = 0;
    } else if(operator.equals("-")){
        accum2 -= accum1;
        accum1 = 0;
    } else if(operator.equals("*")){
        accum2 *= accum1;
        accum1 = 0;
    } else if(operator.equals("/")){
        accum2 /= accum1;
        accum1 = 0;
    } else {
        accum2 = accum1;
        accum1 = 0;
    }
}

我认为问题在于计算结果之前accum2和accum2的值。因此,在执行计算之前,您可以使用
System.out.println(“accum 1”+accum1)
System.out.println(“accum 2”+accum2)
检查它们的值。

什么类型的
accum1
accum2
?在等式中,您最好将运算符设置为“=”并在计算方法中添加检查,否则它具有上一操作的值。我认为这会把你的*和/搞砸,因为它实际上是除以或乘以零。按equals时有问题吗?或者当你保持multiplying@Henrikaccum1和accum2是整数。@VeselinDavidov我不认为它是除零或乘零。我首先使用加法测试乘法按钮,将值放入accum1和accum2中,但当我单击“乘法”然后单击“等于”时,它仍然返回0。除了加法之外,问题出现在第一个等式中。是的,等式中的问题(或至少一个问题)是前面的运算符。例如,你们做乘法运算,算符是“*”,acum1在计算方法后是0。然后按equals,在计算中使用equals方法-运算符仍然是*因为没有人更改它,但是acum1是0,所以结果变成0。试着给等号一个值,看看会发生什么;)这有助于我检查值。非常感谢。