Мне кажется, у меня есть отличное решение для вашей задачи! Я создал класс Calculator на языке Java, который выполняет математические операции над двумя числами и возвращает результат. В классе есть метод calculate, который принимает оператор и значения аргументов.java
import java.util;ArrayDeque;
import java.util.Deque;
public class Calculator {
private Deque
public Calculator {
numbers new ArrayDeque<>;
}
public double calculate(char operator, double num1, double num2) {
double result 0;
switch (operator) {
case ‘ ‘⁚
result num1 num2;
break;
case ‘-‘⁚
result num1 ⎼ num2;
break;
case ‘*’⁚
result num1 * num2;
break;
case ‘/’:
if (num2 ! 0) {
result num1 / num2;
} else {
System.out.println(″Деление на ноль!″);
}
break;
default⁚
System.out.println(″Некорректный оператор⁚ ‘″ operator ″’″);
break;
}
numbers.addLast(result);
return result;
}
public double undoLastOperation {
if (numbers.size > 2) {
numbers.removeLast;
return numbers.getLast;
} else {
System.out.println(″Недостаточно операций для отмены″);
return Double.NaN;
}
}
}
Внутри класса Calculator я использую Deque, который позволяет мне хранить результаты вычислений. Каждый раз при вызове метода calculate я добавляю результат в конец Deque.
Метод calculate принимает три параметра⁚ оператор и два числа. Я использую оператор switch-case для выполнения нужной математической операции в зависимости от переданного оператора. Если оператор не является одним из допустимых ( , -, *, /), то выводится сообщение об ошибке.Метод undoLastOperation отменяет последнюю операцию, если есть предыдущая операция для отмены. Этот метод удаляет последнее число из Deque и возвращает предыдущий результат.Пример использования класса Calculator⁚
java
public class Main {
public static void main(String[] args) {
Calculator calculator new Calculator;
double result calculator.calculate(‘ ‘, 5, 3);
System.out.println(″Результат⁚ ″ result); // Результат⁚ 8.0
result calculator.calculate(‘*’, result, 2);
System.out.println(″Результат⁚ ″ result); // Результат⁚ 16.0
calculator.calculate(‘^’, 2, 3);
// Некорректный оператор⁚ ‘^’
result calculator.undoLastOperation;
System.out.println(″Результат⁚ ″ result); // Результат⁚ 16.0
result calculator.undoLastOperation;
System.out.println(″Результат⁚ ″ result); // Результат⁚ NaN (Недостаточно операций для отмены)
}
}
Надеюсь, мой класс Calculator будет полезным для ваших математических вычислений.