-1

次のような文字列があります: String str="(2+(3*4))+(1+2)"; どういうわけか、その値を整数形式で計算したい。つまり、2+12+3=17 を取得できるはずです。私にとって重要なのは最終結果です。

str.replaceAll("\((.*?)\)", "$1") を使用しましたが、これは正しく機能せず、整数として答えを得ることができません。

誰でも私を助けることができますか?前もって感謝します :)

4

4 に答える 4

4

入植地アルゴリズムはそのために適しています。このアルゴリズムを使用したソースコード付きの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();
        }

    }
}
于 2013-09-20T12:22:42.123 に答える
3

おそらく、Java で ScripEngine クラスを使用し、eval() 関数を呼び出して式を評価できます。

このリンクが役立つと思います。

++

于 2013-09-20T12:17:16.820 に答える
0

ジェヴァルをチェック

そしてこの質問

于 2013-09-20T12:20:22.483 に答える