Вопрос по math, java, string, operation – Могу ли я преобразовать строку в математическую операцию в Java?

7

Могу ли я преобразовать строку типа «3 * 3 + 3»? математическая операция в Java ??

Ваш Ответ

2   ответа
3

вам придется реализовать парсер. Однако вы также можете найти готовый проект, такой как: http://sourceforge.net/projects/jep/ или же http://code.google.com/p/symja/wiki/MathExpressionParser

@ Марко - можешь объяснить?
Вы имеете в виду JavaScript Engine? Это работает, но я думаю, что это слишком много накладных расходов, а функциональность ограничена. Лучше использовать специализированные библиотеки.
Если вам это нужно, тогда да. OP, однако, не мотивировал это, и утверждение, что встроенной функции нет, хорошо вводит в заблуждение - за исключением случаев, когда вы решаете интерпретировать вопрос о представлении выражения, а не о его результате.
@BrianAgnew Просто посмотрите на голосующий за него ответ. За исключением тех случаев, когда вы действительно верите, что вопросrepresentation выражения, в котором я сомневаюсь. Но не нужно спорить об этом.
11

ScriptEngine

String xyz = "3*3+3";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("JavaScript");        
Object result = se.eval(xyz);

Ссылка:Документация

Я понимаю вашу точку зрения. В этом случае xyz должен соответствовать регулярному выражению, чтобы убедиться, что он содержит только числа и математические операторы.
Это потенциально очень опасно и предполагает, что вы полностью доверяете источнику строки xyz. Это позволяет выполнять любой JavaScript. Например, попробуйте в настройках xyz значение «while (true);». Увидетьstackoverflow.com/questions/1601246/… .

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