Манипулирование строкой Java (A / B) + C - PullRequest
1 голос
/ 21 сентября 2010

есть ли в дикой природе библиотека Java, которая может "вычислить" строку:

(aaa/bbb/ccc)+ddd

в

aaa ddd, bbb ddd, ccc ddd

и может быть "решить" вложенный:

(a+(b/c))/((d/e)+f)

до

a b, a c, d f, e f

Спасибо

Ответы [ 4 ]

1 голос
/ 21 сентября 2010

Я полагаю, вы пытаетесь решить уравнение. Тогда вы можете сделать это:

  1. Используйте регулярное выражение, чтобы разделить уравнение или разделить строку, чтобы создать массив отдельных символов.

  2. Используйте LinkedList в Java для построения Списка, следуйте БОДМАСУ: ищите, решайте и удаляйте.

Пример: 2-3 + 1

Регекс дает: [2, -, 3, +, 1]

Вставьте его в LinkedList и сначала выполните поиск (), затем + ... и т. Д. (Следуйте БОДМАСУ). Поэтому, когда встречается +, выполните: -3 + 1, удалите + и 1. Замените 3 на сумму (2).

1 голос
/ 21 сентября 2010

Попробуйте генератор синтаксического анализатора для Java, например Jack или one из others .Парсеры - отличный инструмент в репертуаре программиста, и эти инструменты делают их довольно простыми.

1 голос
/ 21 сентября 2010

Я не знаю ни о чем из рук в руки, но я бы пошел дальше и просто написал код из рук в руки.Проанализируйте файл, найдите (), разделите строки на /, в конце добавьте все строки / со строкой +, и все должно получиться.

0 голосов
/ 21 сентября 2010

Я знаю математический парсер с открытым исходным кодом из mycsharp.de , который получил довольно хорошую обратную связь, его C #, но может быть хорошим примером того, как идти (и его легко конвертировать). К сожалению, это не только C #, но и немецкий.

Но есть много математических парсеров, просто google "парсер математических выражений" или что-то в этом роде. Взгляните на lex тоже!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...