Java Netbeans 计算器执行错误计算

Posted

技术标签:

【中文标题】Java Netbeans 计算器执行错误计算【英文标题】:Java Netbeans Calculator performing wrong calculation 【发布时间】: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 一个值 = 看看会发生什么;) 【参考方案1】:

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

【讨论】:

这帮助我检查了这些值。谢谢。

以上是关于Java Netbeans 计算器执行错误计算的主要内容,如果未能解决你的问题,请参考以下文章

在 netbeans 8.2 的计算机上找不到 JDK

在客户端计算机中实现小型数据库应用程序

用JAVA编一个计算器的程序,要里边的注释

java 图形界面设计制作计算器

Java 虚拟机启动器错误:Jar 文件无效或损坏

JFrame 自动计算