About Calculation App - KsuTul/Calculator GitHub Wiki

                                                  About Calculation App

Приложение состоит из следующих частей: CalculatorApp - точка входа в приложение, где вызываем методы ввода и вывода IOExpression - класс, который содержит логику ввода и вывода информации Основная работа приложения происходит в классе Calculator и методе Calculate, где вызывается статические методы класса StringParcer getOpersList и getOpersValues, внутри которых идет проверка всего выражения на правила валидации (класс Validator метод valudate). То есть схематично можно представить работу приложения так:

CalculatorApp --->InputExpression()--->Calculator (calculate() -> StringParcer --> Validator) ---> OutputExpression()

Если говорить про алгоритм, то для того, чтобы произвести расчет, в методах StringParcer вводимое выражение разбиваю на два списка - список операторов и список числовых значений. В методе calculate() по приоритету операций сначала ищем умножение и деление, если такие операции есть, то мы из списка операторов берем индекс нужного оператора, записываем в переменную currentIndex и производим вычисление, получив из списка значений, необходимые по индексу currentIndex и currentIndex + 1; То есть у нас есть выражение 1+2, в 1-ом списке лежит +, во втором 1, 2. Индекс оператора в первом списке - 0, значит из второго берем по индексу 0 и 1. Затем, в списке операторов убираем уже отработанный оператор, а в списке значений эти два числа заменяем на результат вычисления. После всех операций умножения и деления, мы переходим к операциям сложения и вычитания.

В программе предусмотрена обработка с выводом понятных сообщений.

Если нужно будет добавить дополнительный операции, то нам нужно будет скорректировать метод calculate и добавить символы в регулярные выражения.

Также для приложения написаны юнит тесты. Приложение содержит версию Java 11.