Я пытаюсь создать калькулятор, который будет оценивать выражения, считанные из строки в java.
Мой алгоритм рекурсивно разбивает входную строку по операции с самым низким приоритетом (т. е. крайним справа +), а затем оценивает, когда она остается, с бинарной операцией.
По какой-то причине у меня возникают проблемы с проверкой того, вложен ли оператор в круглые скобки.
Это моя проверка — exp — это строка выражения, lastMD — это индекс, по которому рассматриваемый оператор находится в exp
if (exp.lastIndexOf('(', lastMD) != -1 && exp.lastIndexOf('(', lastMD) < lastMD && exp.lastIndexOf('(', lastMD) > exp.lastIndexOf('(', lastMD)) {
// it is in parenthesis
}
else {
// it is not in parenthesis
}
По какой-то причине он не работает и переходит к другому, даже если lastMD содержится в скобках.
Что мне не хватает?
Спасибо!