【问题标题】:Java Netbeans Calculator performing wrong calculationJava Netbeans 计算器执行错误计算
【发布时间】:2018-04-01 07:02:41
【问题描述】:

我目前正在使用 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;
    }
}

【问题讨论】:

  • accum1accum2是什么类型?
  • 在等于你最好将运算符设置为“=”并在计算方法中添加检查,否则它具有先前操作的值。我认为这会弄乱你的 * 和 / 因为它实际上除以或乘以零。按等于时有问题吗?或者当你不断增加时
  • @Henrik accum1 和 accum2 是整数。
  • @VeselinDavidov 我不认为它是除以或乘以零。我通过首先使用加法将值放入我的 accum1 和 accum2 来测试乘法按钮,但是当我单击乘法然后等于时,它仍然返回 0。问题出在第一个等于除了加法之外。
  • 是的,equals 中的问题是(或至少其中一个问题)您有前一个运算符。因此,例如,您进行乘法运算,运算符为“*”,计算方法后 acum1 为 0。然后你按下 equals 并在 equals 方法中进行计算 - 运算符仍然是 * 因为没有人更改它但 acum1 为 0 所以结果变为 0。尝试给 equals 一个值 = 看看会发生什么;)

标签: java calculator netbeans-8.2


【解决方案1】:

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

【讨论】:

  • 这帮助我检查了这些值。谢谢。
猜你喜欢
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多