2016-12-22 2 views
0

So weiß ich, dass SieWie konvertiert man einen String in einen mathematischen Ausdruck und evaluiert mit einer Variablen?

ScriptEngineManager mgr = new ScriptEngineManager(); 
    ScriptEngine engine = mgr.getEngineByName("JavaScript"); 
    String infix = "3+2*(4+5)"; 
    System.out.println(engine.eval(infix)); 

, die alle großen verwenden können, ist aber was ist, wenn ich eine Variable in diesem Ausdruck bewerten wollte nennen es x und machen, dass eine Zufallsvariable zwischen 0 und 1. Diese ist eine Idee um bestimmte Integrale unter Verwendung einer Monte-Carlo-Methode unter Verwendung der vom Benutzer gegebenen Eingabe auszuwerten. Also, wenn wir etwas hatten, wie sagen

String infix = x^2+2; 
+1

Was ist das Problem? – shmosel

+0

deutlich Ihr Problem angeben. –

Antwort

1

Nur ScriptEngine#put verwenden, um die jeweiligen Variablen zu setzen. Z.B .:

... 
engine.put("x", 25); 
System.out.println(engine.eval("x * x + 3 * x + 5")); 

Alternativ Verwendung der Tatsache, Sie könnten, dass der Rahmen des Script nicht zwischen zwei eval -calls schaltet ist:

... 
engine.eval("var x = 25"); 
System.out.println(engine.eval("x * x + 3 * x + 5")); 
+0

sweeeet man, das ist super danke für das – jc7553a

+0

@ jc7553a froh zu helfen :). Wenn die Antwort Ihr Problem gelöst hat, sollten Sie es akzeptieren (das Häkchen neben den Aufwärts-/Abwärtspfeilen), um das Problem als gelöst zu markieren;) – Paul

Verwandte Themen