2010-11-22 4 views
1

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

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

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

ответ

1

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

  1. Прочитайте выражение в строке variable.Here выражение находится в виде инфиксной.
  2. Преобразуйте выражение в строковой переменной в постфиксную форму и сохраните его в другой строковой переменной, а именно: postfix_str.
  3. Оцените выражение в постфиксной форме (значение в данных postfix_str) с помощью Stack.
+0

Спасибо, этот http://faculty.cs.niu.edu/~hutchins/csci241/eval.htm работал для меня, но он работает только для операндов длины одного символа, я имею в виду 3, 5,9 и т. Д., А не 45, 34, 81 и т. Д. Не могли бы вы рассказать мне об этом. –

2

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

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

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

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

+0

Спасибо за вашу любезную информацию. Я думаю, что анализатор на основе стека означает преобразование выражения в строку в постфикс, а затем оценивать? Правильно ли это или каким-либо другим способом. Попросите меня решить проблему. Новый разработчик в J2ME (im свежее на работу) –

+0

Hi Fredrick Pennachi, –

+1

Hi Fredrick Pennachi, Спасибо за вашу любезную информацию. Я думаю, что анализатор, основанный на стеках, означает преобразование выражения в строку в постфикс, а затем оценивать? Правильно это или любым другим способом. Попросите меня решить issue.Im новый разработчик в J2ME (im свежее задание) –