Pregunta sobre math, java, string, operation – ¿Puedo convertir una cadena a una operación matemática en java?

7

¿Puedo convertir una cadena como "3 * 3 + 3" a una operación matemática en java?

Tu respuesta

2   la respuesta
3

tendría que implementar un analizador. Sin embargo, también puede buscar un proyecto listo, como:http://sourceforge.net/projects/jep/ ohttp://code.google.com/p/symja/wiki/MathExpressionParser

@BrianAgnew Solo mira la respuesta más votada. Excepto si realmente crees que la pregunta es sobre conseguir unrepresentación De la expresión, que dudo. Pero no hay necesidad de discutir sobre eso. Marko Topolnik
Si lo necesitas, entonces sí. Sin embargo, OP no lo motivó, y la afirmación de que no hay una función incorporada es, bueno, engañosa, excepto si elige interpretar que la pregunta es sobre la representación del expr, no sobre su resultado. Marko Topolnik
@Marko, ¿puedes dilucidar? Brian Agnew
te refieres al motor de JavaScript? Funciona, pero creo que es una sobrecarga, y la funcionalidad es limitada. Es mejor utilizar bibliotecas especializadas. Elchin
11

Evaluarlo es como usar JavaScriptScriptEngine

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

Referencia:Documentación

Te entiendo. En este caso, se debe hacer coincidir xyz usando expresiones regulares, para garantizar que solo contenga números y operadores matemáticos Anirudh Ramanathan
Esto es potencialmente muy peligroso y supone que confías completamente en el origen de la cadena xyz. Esto permite la ejecución de cualquier JavaScript. Por ejemplo, intente la configuración xyz en "while (true);". Verstackoverflow.com/questions/1601246/… . johusman

Preguntas relacionadas