Создание калькулятора с отменой последней операции с помощью ArrayDeque и Deque в Java
Здравствуйте! Меня зовут Алексей, и сегодня я хотел бы поделиться с вами своим опытом создания калькулятора с функцией отмены последней операции на языке программирования Java, используя интерфейсы ArrayDeque и Deque.Для начала, давайте разберемся, что такое ArrayDeque и Deque. ArrayDeque ー это реализация интерфейса Deque в Java, которая представляет собой двустороннюю очередь (очередь, в которой можно добавлять и удалять элементы как с начала, так и с конца). Deque ー это сокращение от ″двусторонняя очередь″.Давайте перейдем к самому коду⁚
java
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Deque
Scanner scanner new Scanner(System.in);
while (true) {
System.out.println(″Введите число или оператор ( , -, *, /, <)⁚″);
if (scanner.hasNextDouble) {
double number scanner.nextDouble;
stack.push(number);
} else {
String operator scanner.next;
if (operator.equals(″<″)) {
if (stack.size < 2) {
System.out.println(″Выполнение отмены невозможно⁚ недостаточно операндов.″);
} else {
stack.pop;
double result stack.pop;
stack.push(result);
System.out.println(″Результат предпоследней операции⁚ ″ result);
}
} else if (″ -*/".contains(operator)) {
if (stack.size < 2) {
System.out.println(″Вычисление операции невозможно⁚ недостаточно операндов.″);
} else {
double operand2 stack.pop;
double operand1 stack.pop;
double result calculate(operator, operand1, operand2);
stack.push(result);
System.out.println(″Результат операции ″ operand1 ″ ″ operator ″ ″ operand2 ″⁚ ″ result);
}
} else {
System.out.println(″Неверный оператор.″);
}
}
}
}
private static double calculate(String operator, double operand1, double operand2) {
switch (operator) {
case ″ ″⁚
return operand1 operand2;
case ″-″⁚
return operand1 ⎼ operand2;
case ″*″⁚
return operand1 * operand2;
case ″/":
return operand1 / operand2;
default⁚
throw new IllegalArgumentException(″Недопустимый оператор⁚ ″ operator);
}
}
}
Теперь, когда у нас есть код, давайте разберем его работу. Мы создали стек (очередь) с помощью ArrayDeque, в котором будем хранить операнды и результаты операций. Затем мы создаем объект Scanner для чтения ввода пользователя. Затем начинается бесконечный цикл, в котором мы запрашиваем у пользователя ввод чисел или операторов. Если пользователь вводит число, оно помещается в стек с помощью метода push. Если пользователь вводит оператор ″<″, мы проверяем, есть ли в стеке как минимум два операнда. Если да, мы выполняем операцию отмены последней операции, выводим результат предпоследней операции и помещаем его обратно в стек. Если же пользователь вводит оператор , -, *, /, мы выполняем обычную операцию с двумя операндами, выводим результат и помещаем его в стек. Если пользователь вводит неверный оператор, выводится сообщение об ошибке. Таким образом, мы создали калькулятор, который позволяет выполнять операции и отменять последнюю операцию при необходимости.
From: [email protected] To: [email protected] Subject: Dear friend …I’m really excited about this weekend. Do you know why? I’m packing my bag now for the school camping trip!!! We’re going to sleep in tents and cook food on an open fire. And I’ve never done that before!…
…What important things do you think I should take? Where have you been with your class? What other special events do you have at school? …