我有一個字符串形式的數學表達式。 String exp = "3 + 6 - 10 + 12 + 15";
現在如何計算這個表達式的結果,就像我們用其他數學表達式一樣。 幫幫我。Java。如何評估一個String表達式?
-1
A
回答
-1
通過JDK 1.6或更高版本。
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expression = "3+6-10+12+15";
try {
System.out.println(engine.eval(expression));
} catch (ScriptException ex) {
System.out.println("Error occured.");
}
+2
這很容易[代碼注入](https://en.wikipedia.org/wiki/Code_injection)...如果這個值取自用戶輸入和他們寫'txt =「a」; while(1){txt = txt + =「a」;}'?這會讓你崩潰。此外,惡意程序可能會運行。無論如何,使用Javascript只是計算一些基本的算術似乎有點硬核。 – bcsb1001
3
假設有可能只是+
和-
操作,您可以刪除所有的空格,並將其拆分爲正,負整數,總結他們。
String expr = "3 + 6 - 10 + 12 + 15";
String[] nums = expr.replaceAll("\\s", "").split("\\+|(?=-)");
int result = Arrays.stream(nums).mapToInt(Integer::parseInt).sum();
如果表達式可能更復雜,但包括更多運算符或括號,則必須使用其他解決方案。
+0
這個解決方案比腳本引擎好得多。 –
0
可以使用BeanShell的bsh.Interpreter爲同:
Interpreter interpreter = new Interpreter();
interpreter.eval("result = 5+4*(7-15)");
System.out.println(interpreter.get("result"));
它將評估複雜的數學表達式。
相關問題
- 1. 駱駝...評估一個java表達式
- 2. Java Eclipse評估表達式
- 3. 評估列表<String>作爲一個數學表達式
- 4. 如何評估表達式?
- 5. 如何評估另一個表達式中的angularjs表達式
- 6. Python如何評估這個表達式?
- 7. 一次一個表達式評估
- 8. 評估表達式
- 9. 評估一個表達式樹
- 10. 評估一個代數表達式
- 11. 評估一個數學表達式(python)
- 12. 試圖評估一個表達式
- 13. Java中的布爾表達式評估
- 14. 的Java:評估後綴表達式
- 15. Java遞歸數學表達式評估
- 16. JAVA - 表達式解析和評估庫
- 17. 表達式樹評估java.lang.NumberFormatException java
- 18. 在java中評估後綴表達式
- 19. 如何評估樹中的表達式?
- 20. 如何評估JavaScript表達式?
- 21. 如何評估這些C表達式?
- 22. Angular如何評估表達式?
- 23. Python - 如何評估以下表達式?
- 24. 如何評估ExpressionVisitor中的表達式?
- 25. 如何評估這些表達式?
- 26. 如何評估以下Javascript表達式?
- 27. JavaScript如何評估語句表達式?
- 28. 如何評估Handlebars表達式?
- 29. C#如何評估lambda表達式?
- 30. 如何評估MathML表達式?
您必須在數字和運算符中翻譯您的字符串。它沒有功能。編輯:也許腳本引擎:http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form – pL4Gu33
看看[這個問題](http://stackoverflow.com/ q/4589951/2032064) – Mifeet
謝謝你:D:D –