どのようにJavaで複雑な論理演算を解析するには?

Mrkrky:

論理含める文字列を解析する方法があるand/のorオペレーターをしてJavaで真または偽として結果を得るには?例えば

    (1 OR 0 AND 1 AND 0 OR(0 AND 0))

私は、任意のライブラリを見つけることができませんでした。実際に私はいくつかのアイデアを持っているが、彼らは非常に複雑です。たぶん、いくつかの簡単な方法?

ダニール:

あなたは既に述べたスクリプトエンジンを使用することができます。

String expression = "(1 || 0 && 1 && 0 ||(0 && 0))";
Object result = new ScriptEngineManager().getEngineByName("JavaScript").eval(expression);
System.out.println(result);

またはスプリング式の言語:

String data = "(true OR false AND true AND false OR(false AND false))";
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression(data);
result = exp.getValue();
System.out.println(result);

してくださいノート、両方のケースでeighter lofical演算子や論理定数に置き換えることによって、元の表現を変更するためにそこに必要だったということ。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=5058&siteId=1