Привет, меня зовут Максим, и сегодня я хочу поделиться с вами своим опытом использования ArrayDeque и Deque в языке Java для создания калькулятора с функцией отмены последней операции.
Одной из самых полезных функций, которую я реализовал в своем калькуляторе, была возможность отменить последнюю операцию, если был передан оператор ‘<'. Это означает, что калькулятор должен вывести результат предпоследней операции.
Для начала, я создал класс Calculator, в котором я реализовал метод calculate, принимающий строку с выражением в виде параметра. Внутри метода calculate я инициализировал ArrayDeque, который позволяет быстро добавлять и удалять элементы с обоих концов очереди.
Затем, я разделил строку на операнды и операторы, используя метод split. Затем я прошелся по полученному массиву строк и проверил, является ли текущий элемент числом или оператором.
Если это число, я добавлял его в ArrayDeque. Если это оператор, я проверял, является ли он оператором отмены ('<'). Если да, я удалял два последних элемента из ArrayDeque, выполнял операцию между ними и добавлял результат обратно в ArrayDeque.
После обработки всех элементов в массиве, в ArrayDeque оставался только один элемент ─ результат вычислений. Я возвращал его в качестве результата метода calculate.
Вот пример кода⁚
java
import java.util.ArrayDeque;
import java.util.Deque;
public class Calculator {
public static double calculate(String expression) {
Deque
String[] tokens expression.split(″ ″);
for (String token ⁚ tokens) {
if (Character.isDigit(token.charAt(0))) {
stack.push(Double.parseDouble(token));
} else {
if (token.equals(″<″)) {
double operand2 stack.pop;
double operand1 stack.pop;
double result operand1 operand2; // Можно заменить на другую операцию
stack.push(result);
}
}
}
return stack.pop;
}
public static void main(String[] args) {
System.out.println(calculate(″2 3 <″)); // Результат⁚ 2
System.out.println(calculate(″5 4 < 3 ″)); // Результат⁚ 8
System.out.println(calculate(″6 7 < 1 2 ″)); // Результат⁚ 10
}
}