Я заметил этот вопрос, заданный раньше, с горсткой времени, однако я не могу найти ничего, что действительно мне помогло. В настоящее время я пытаюсь заставить мой калькулятор выполнять добавление, вычитание, умножение и разделение, но я не могу понять, как выполнить различные операции.Нужна помощь Создание калькулятора, который может выполнять несколько операций
EDIT: Я выяснил, как это сделать для каждой операции ЗА ИСКЛЮЧЕНИЕМ операции добавления. По какой-то причине я получаю сообщение об ошибке «невозможно преобразовать из« Добавить в BinaryOperator ». Код для добавления такой же, как и другие операторы, я не понимаю, почему только этот оператор вызывает ошибку.
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);
}
Отобразите каждого оператора в соответствии с строковым представлением и просто получите соответственно – Paul
Пример: в 'subtractKeyPressed', установите' _operation' равным объекту 'Sub'. Затем, когда нажата равная величина, в качестве операции используется 'Sub'. – forgivenson
Я обновил свой код с изменениями. Как я сказал ниже, я получаю сообщение об ошибке «can not convert from Add to BinaryOperator». – sqwert