Как оценить математическое выражение из строки в J2ME - PullRequest
1 голос
/ 22 ноября 2010

Как оценить математическое выражение из строки в J2ME.

Например, строка, содержащая «2 * 4». Из строки, которую я хочу, оценить математическое выражение и получить результат как 8 (2 *4). Как я должен сделать это в J2ME.

В "Java ™ Platform Standard Ed. 6" есть пакет, а именно "javax.script" используется для оценки математических выражений из строки. Как и любой пакетили любой класс доступен для J2ME, чтобы оценить математическое выражение из строки.

Ответы [ 2 ]

2 голосов
/ 22 ноября 2010

Если вам нужно обработать вложенные выражения, просто напишите свой собственный синтаксический анализатор на основе стека.

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

В базовом случае вы анализируете все операторы и операнды в их соответствующие стеки, а затем оцениваете, выталкивая два операнда и оператор, выполняя вычисление и сохраняя результат обратно в стеке операндов.Продолжайте, пока стек операторов не станет пустым, а стек операндов будет иметь только одно значение (результат).Если у вас закончились операторы и в вашем стеке более одного результата, то в выражении есть ошибка.

Для обработки скобок (включая вложенные скобки) вы включаете операторы для левой и правой частей.При синтаксическом анализе выражения, если вы столкнулись с правой пареной, начинайте оценивать выражение немедленно (выталкивая два операнда и оператор, помещая результат обратно в стек операндов), пока не встретите левую пареню.Затем возобновите синтаксический анализ выражения.

1 голос
/ 26 ноября 2010

Следующие шаги используются для оценки математического выражения из строки в J2ME

  1. Прочитайте выражение в строковой переменной. Вот выражение в инфиксной форме.
  2. Преобразуйте выражение в строковой переменной в постфиксную форму и сохраните его в другой строковой переменной, а именно "postfix_str".
  3. Оценка выражения в форме постфикса (значение в данных "postfix_str") с использованием стека.
...