@daemon117733
Токарь чпу

Как строку перевести в математическое выражение?

Пишу калькулятор, хочу что бы он умел считать выражения типа "2+3*4/2"
Цифры у меня получилось вывести и преобразовать их в Int, а что делать со знаками я не знаю, знаки выглядят как String.
Как подружить цифры со знаками?
  • Вопрос задан
  • 2779 просмотров
Пригласить эксперта
Ответы на вопрос 3
profesor08
@profesor08
ScriptEngine

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result = engine.eval("2+3*4/2");
Ответ написан
Комментировать
@ads83
что делать со знаками я не знаю
Нужно разбирать (парсить) все выражение целиком. Глобально, есть два варианта:
  1. Пойти легким путем и использовать готовые парсеры. Например, в ответе profesor08 используется встроенный в движок javascript - фунцкия eval. Она все делает сама: определяет числа, расставляет приоритет операций, считает.
  2. Пойти интересным путем и написать парсер самому. Такие задачи могут дать в конце семестра студентам профильного вуза. Парсер проходит по выражению и строит некое внутреннее представление. Потом проходит еще раз и вычисляет значение, исходя из этого представления. Чаще всего используется обратная польская нотация. Ничего сложного, но скорее всего, первый раз уйдет не один вечер чтобы написать и отладить.

Ответ написан
@Cheypnow
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы