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

StackOverflow https://stackoverflow.com/questions/4242729

  •  27-09-2019
  •  | 
  •  

Вопрос

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

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

В «стандарте платформы Java ™ ™ Ed. 6» есть пакет, а именно «javax.script» используется для оценки математических выражений из String.ikik, что любой пакет или любой класс доступен для j2me для оценки математического выражения из строки.

Это было полезно?

Решение 2

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top