Java Арифметическое уравнение строка java min (x, y), max (x, y), +, -, /, * - PullRequest
0 голосов
/ 29 октября 2019

Я хочу создать метод в Java, который получает строковое уравнение, например: «3 + 2» или «32-1 / 3» или даже «min (32,21)» и возвращает найденный результатScriptEngine, который предлагает решение для простых операций:

ScriptEngineManager mgr = new ScriptEngineManager();
 ScriptEngine engine = mgr.getEngineByName("JavaScript");
 java.lang.String result;
 result = engine.eval(equation).toString();

Но он не имеет функций min (), max (), а также небезопасен, потому что вы можете вводить вредоносные скрипты через.

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Я нашел отличную библиотеку, я просто предоставляю математическое уравнение строки, и оно решает его и предлагает множество других функций.

Это называется mxParser от Mariusz Gromada.

import  org.mariuszgromada.math.mxparser.*;
import  org.mariuszgromada.math.mxparser.Constant;

  Constant mp = new Constant("mp",0.5);
        String mpString = Double.toString(mp.getConstantValue());
        String equation = "min(max(1,6)," + mpString +")";
        Expression e = new Expression(equation);
        System.out.println(e.calculate());
0 голосов
/ 29 октября 2019

Комментарий от @kshetline должен решить вашу проблему с вопросом арифметического выражения;Что касается безопасности, то все, что я могу придумать, это использовать какую-то инфраструктуру для очистки ввода или написать свою собственную реализацию.

Проверьте Как лучше всего очистить ввод в веб-приложении Java.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...