【发布时间】: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 一个值 = 看看会发生什么;)
标签: java calculator netbeans-8.2