java Как получить коэффициенты полинома из строки [duplicate]

-2
задан fabian 26 March 2015 в 22:27
поделиться

2 ответа

Вы можете использовать ScriptEngine:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "( (21 + 3) / 4 ) ";
try {
    System.out.println(engine.eval(foo));
} catch (ScriptException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
2
ответ дан Luiggi Mendoza 26 August 2018 в 10:01
поделиться

Отказ от ответственности: этот ответ действителен только в том случае, если вы намереваетесь сами делать это. Если вы ищете быстрый / эффективный способ проведения такого разбора, лучше использовать какой-либо инструмент / библиотеку, как предлагается в других ответах ...

У вас есть программа, которая преобразует нотацию infix в постфиксная нотация. Например:

infix: ((21 + 3) / 4)

должно выводить что-то вроде:

postfix: 21 3 + 4 /

Теперь, если вы хотите оценить это выражение, нотация постфикса довольно проста: при чтении токена слева направо вам просто нужно стекать операнды (21, 3, ...), пока не будет найден оператор (+, /). Затем вы набираете стек, применяете оператор и складываете результат.

  • init stack: [], expr: 21 3 + 4 /
  • read 21, stack it: stack: [21], expr: 3 + 4 /
  • читать 3, стек: стек: [21 3], expr: + 4 /
  • читать +, pop 3 и 21, добавить и вывести результат стека 24: [24], expr: 4 /
  • прочитать 4, уложить стек: [24 4], expr: /
  • читать /, pop 4 и 24, делить и выводить результат 6 stack: [6], expr:.

Когда токена больше нет, стек содержит окончательный результат.

0
ответ дан T.Gounelle 26 August 2018 в 10:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: