次のような文字列があります: String str="(2+(3*4))+(1+2)"; どういうわけか、その値を整数形式で計算したい。つまり、2+12+3=17 を取得できるはずです。私にとって重要なのは最終結果です。
str.replaceAll("\((.*?)\)", "$1") を使用しましたが、これは正しく機能せず、整数として答えを得ることができません。
誰でも私を助けることができますか?前もって感謝します :)
入植地アルゴリズムはそのために適しています。このアルゴリズムを使用したソースコード付きのJava アプレットを次に示します。
式の評価については、これらのライブラリを見ることができます-
Janino - これは本当にすごい!
組み込みのJavascript エンジンを使用する:
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class ExpressionEvaluation {
public static void main(String... args) {
final ScriptEngineManager mgr = new ScriptEngineManager();
final ScriptEngine engine = mgr.getEngineByName("JavaScript");
String expr = "(2+(3*4))+(1+2)";
try {
System.out.println(engine.eval(expr)); // prints out 17
} catch(Exception ex){
//TODO: handle the exception
ex.printStackTrace();
}
}
}