Package org.example.expression
Class Expression
- java.lang.Object
-
- org.example.expression.Expression
-
public class Expression extends Object
Публичный API для вычисления математических выражений.Класс предоставляет простой интерфейс для парсинга и вычисления арифметических выражений, включая поддержку:
- Базовых арифметических операций:
+,-,*,/ - Скобок для группировки:
( ) - Математических функций:
sin,cos,tan,ln,log10,log2,sqrt,abs - Переменных (одиночные буквы):
x,y,zи т.д.
Архитектура: Класс реализует паттерн Facade, скрывая сложность токенизации, парсинга (Shunting Yard алгоритм) и вычисления (RPN через стек).
Примеры использования:
// Простое выражение Expression expr1 = new Expression("2 + 2 * (3 - 1)"); double result1 = expr1.calc(); // 6.0 // С функциями Expression expr2 = new Expression("sqrt(16) + abs(-5)"); double result2 = expr2.calc(); // 9.0 // С переменными (запрос значений в консоли) Expression expr3 = new Expression("x * x + y"); double result3 = expr3.calc(); // запросит ввод x, затем y // С кастомным evaluator (для тестирования) StackEvaluator customEvaluator = new StackEvaluator(provider, registry); Expression expr4 = new Expression("x + y", customEvaluator);- Since:
- 1.0
- See Also:
Tokenizer,Parser,StackEvaluator
- Базовых арифметических операций:
-
-
Constructor Summary
Constructors Constructor Description Expression(String expression)Создаёт выражение для вычисления с настройками по умолчанию.Expression(String expression, StackEvaluator evaluator)Создаёт выражение с кастомным вычислителем.
-
-
-
Constructor Detail
-
Expression
public Expression(String expression)
Создаёт выражение для вычисления с настройками по умолчанию.Использует стандартные компоненты:
Tokenizer— для лексического анализаParser— для преобразования в RPNStackEvaluator— для вычисления без переменных
- Parameters:
expression- строка математического выражения- Throws:
ExpressionException- если выражение содержит синтаксические ошибки- See Also:
Expression(String, StackEvaluator)
-
Expression
public Expression(String expression, StackEvaluator evaluator)
Создаёт выражение с кастомным вычислителем.Позволяет передать
StackEvaluatorс переменными с дополнительными функциями.- Parameters:
expression- строка математического выраженияevaluator- вычислитель RPN с настроенными зависимостями- Throws:
ExpressionException- если выражение содержит синтаксические ошибки
-
-
Method Detail
-
calc
public double calc() throws ExpressionExceptionВычисляет значение математического выражения.Метод выполняет три этапа:
- Токенизация — разбиение строки на токены (числа, операторы, функции)
- Парсинг — преобразование инфиксной записи в обратную польскую (RPN)
- Вычисление — вычисление RPN через стек
Поддержка переменных: Если выражение содержит переменные (например,
"x + y"), иStackEvaluatorбыл создан с VariableProvider, то при вычислении значения переменных будут запрошены у пользователя через консоль (если ещё не закэшированы).- Returns:
- результат вычисления выражения
- Throws:
ExpressionException- если:- выражение содержит синтаксические ошибки
- происходит деление на ноль
- используется неизвестная функция или переменная
- некорректное количество аргументов у функции
- переменные не поддерживаются (нет VariableProvider)
- See Also:
Tokenizer.tokenize(String),Parser.parse(List),Evaluator.evaluate(List)
-
-