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

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

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

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


person SIVAKUMAR.J    schedule 22.11.2010    source источник


Ответы (2)


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

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

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

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

person Fredrick Pennachi    schedule 22.11.2010
comment
Спасибо за вашу любезную информацию.Я думаю, что синтаксический анализатор на основе стека означает преобразование выражения в строке в постфикс, а затем оценку? Правильно ли это или каким-либо другим способом.Помогите мне решить проблему.Я новый разработчик в J2ME (я новичок в работе ) - person SIVAKUMAR.J; 22.11.2010
comment
Привет, Фредрик Пенначи, Спасибо за вашу любезную информацию. Я думаю, что синтаксический анализатор на основе стека означает преобразование выражения в строке в постфикс, а затем оценку? Правильно ли это или каким-либо другим способом. Помогите мне решить проблему. Я новый разработчик в J2ME (я посвежее на работу) - person SIVAKUMAR.J; 22.11.2010
comment
Я только что обновил ответ, чтобы описать синтаксический анализ инфиксного выражения. - person Fredrick Pennachi; 22.11.2010
comment
Спасибо, этот faculty.cs.niu.edu/~hutchins/csci241/eval .htm работал у меня, но он работает только для операндов длиной в один символ, я имею в виду 3, 5,9 и т. д., а не 45, 34, 81 и т. д. Не могли бы вы рассказать мне что-нибудь об этом. - person Nitesh Verma; 15.08.2013

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

  1. Прочтите выражение в строковой переменной. Здесь выражение находится в инфиксной форме.
  2. Преобразуйте выражение в строковой переменной в постфиксную форму и сохраните его в другой строковой переменной, а именно «postfix_str».
  3. Оцените выражение в форме постфикса (значение в данных "postfix_str") с помощью стека.
person SIVAKUMAR.J    schedule 26.11.2010
comment
Спасибо, этот faculty.cs.niu.edu/~hutchins/csci241/eval .htm работал у меня, но он работает только для операндов длиной в один символ, я имею в виду 3, 5,9 и т. д., а не 45, 34, 81 и т. д. Не могли бы вы рассказать мне что-нибудь об этом. - person Nitesh Verma; 15.08.2013