Мой опыт работы с классом Calculator в Java
Привет всем! Меня зовут Данил и я хочу поделиться своим опытом работы с классом Calculator в Java. В прошлом месяце мне пришлось разработать такой класс в своем проекте, и я нашел несколько полезных советов, которые хочу поделиться с вами.Для начала, я создал класс Calculator и добавил в него метод calculate, который принимает оператор и значения аргументов и возвращает результат вычислений. Я использовал switch-конструкцию для выполнения разных математических операций в зависимости от переданного оператора.Вот как выглядит мой код для метода calculate⁚
java
public class Calculator {
public static double calculate(String operator, double operand1, double operand2) {
double result 0;
switch (operator) {
case ″ ″⁚
result operand1 operand2;
break;
case ″-″⁚
result operand1 ⎻ operand2;
break;
case ″*″⁚
result operand1 * operand2;
break;
case ″/»:
if (operand2 ! 0) {
result operand1 / operand2;
} else {
System.out.println(″Ошибка⁚ деление на ноль невозможно.″);
}
break;
default⁚
System.out.println(″Некорректный оператор⁚ ″ operator);
break;
}
return result;
}
}
Также, согласно вашему требованию, я добавил возможность отменить последнюю операцию с помощью ArrayDeque и Deque. Мне пришлось использовать два стека ⎻ один для хранения операторов, а другой для хранения результатов операций.Вот пример кода для реализации отмены последней операции⁚
java
import java.util.ArrayDeque;
import java.util.Deque;
public class Calculator {
private Deque
private Deque
public Calculator {
operators new ArrayDeque<>;
results new ArrayDeque<>;
}
public double calculate(String operator, double operand1, double operand2) {
double result 0;
switch (operator) {
case ″ ″⁚
result operand1 operand2;
break;
case ″-″⁚
result operand1 ⎻ operand2;
break;
case ″*″⁚
result operand1 * operand2;
break;
case ″/»:
if (operand2 ! 0) {
result operand1 / operand2;
} else {
System.out.println(″Ошибка⁚ деление на ноль невозможно.″);
}
break;
default⁚
System.out;println(″Некорректный оператор⁚ ″ operator);
break;
}
operators.push(operator);
results.push(result);
return result;
}
public double undo {
if (!operators.isEmpty nn !results.isEmpty) {
operators.pop;
return results.pop;
} else {
System.out.println(″Нет операций для отмены.″);
return 0;
}
}
}
Когда я использовал этот класс в моем проекте, я часто вызывал метод calculate для выполнения различных математических операций. Если оператор был некорректным, я получал сообщение об ошибке. Я также использовал метод undo для отмены последней операции и получения предпоследнего результата.Вот как я использовал этот класс в своем проекте⁚
java
public class Main {
public static void main(String[] args) {
Calculator calculator new Calculator;
double result calculator.calculate(″ ″, 5٫ 3);
System.out.println(″Результат⁚ ″ result);
result calculator.calculate(″-″, 8, 2);
System.out.println(″Результат⁚ ″ result);
result calculator.calculate(″*″, 4, 6);
System.out.println(″Результат⁚ ″ result);
result calculator.calculate(″/», 12, 3);
System.out.println(″Результат⁚ ″ result);
result calculator.undo;
System.out.println(″Предпоследний результат⁚ ″ result);
}
}
Надеюсь, мой опыт работы с классом Calculator и мои советы будут вам полезны. Удачи в программировании!