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;
【问题讨论】:
accum1
和accum2
是什么类型?
在等于你最好将运算符设置为“=”并在计算方法中添加检查,否则它具有先前操作的值。我认为这会弄乱你的 * 和 / 因为它实际上除以或乘以零。按等于时有问题吗?或者当你不断增加时
@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 计算器执行错误计算的主要内容,如果未能解决你的问题,请参考以下文章