【发布时间】:2016-11-01 19:50:21
【问题描述】:
我已经注意到这个问题之前提出了一些时间,但是我似乎找不到任何真正帮助我的问题。我目前正在尝试让我的计算器执行加法、减法、乘法和除法,但无法弄清楚如何执行不同的操作。
编辑:我已经弄清楚如何为每个操作执行此操作,除了添加操作。出于某种原因,我收到一条错误消息,显示为“无法从 Add 转换为 BinaryOperator”。 add 的代码和其他操作符一样,我不明白为什么只有这个操作符会触发错误。
package part2.code;
import part1.operations.Add;
import part2.user_interface.CalculatorUI;
import part2.operations.Sub;
import part2.operations.Multiply;
import part2.operations.Divide;
import part2.operations.BinaryOperation;
public class Calculator {
// The current value of the calculator
private int _value;
private int _left;
private int _right;
private BinaryOperation _op;
private Add _aop;
private Sub _sop;
private Multiply _mop;
private Divide _dop;
// The user interface via which a user interacts
private CalculatorUI _ui;
public Calculator(CalculatorUI calculatorUI) {
_ui = calculatorUI;
_value = 0;
_left = 0;
_right = 0;
_aop = new Add();
_sop = new Sub();
_mop = new Multiply();
_dop = new Divide();
}
public void digitKeyPressed(int d) {
_value = _value * 10 + d;
_ui.updateDisplay();
}
public void clearKeyPressed() {
_value = 0;
_ui.updateDisplay();
}
public void addKeyPressed() {
_left = _value;
_value = 0;
_op = _aop;
}
public void subtractKeyPressed() {
_left = _value;
_value = 0;
_op = _sop;
}
public void multiplyKeyPressed() {
_left = _value;
_value = 0;
_op = _mop;
}
public void divideKeyPressed() {
_left = _value;
_value = 0;
_op = _dop;
}
public void equalKeyPressed() {
_right = _value;
_value = _op.perform(_left,_right);
_ui.updateDisplay();
}
public int getValue() {
return _value;
}
}
这是计算器的代码,伴随着我的每个操作的文件看起来像这样:
package part2.operations;
public class Sub implements BinaryOperation {
public Sub() {}
@Override
public int perform(int left, int right) {
return left - right;
}
}
将“Sub”替换为任一操作,并将返回语句替换为该操作的相应符号。还有一个 BinaryOperation 的文件:
package part2.operations;
public interface BinaryOperation {
public int perform(int left, int arg);
}
【问题讨论】:
-
将每个操作符映射到它对应的字符串表示并简单地进行相应的检索
-
示例:在
subtractKeyPressed中,将_operation设置为等于Sub对象。然后当等于按下时,它使用Sub作为操作。 -
我已经更新了我的代码并进行了更改。正如我在下面所说,我收到“无法从 Add 转换为 BinaryOperator”的错误。
标签: java calculator