Java で数式を文字列として解析して評価する方法
Java で数式を扱う場合、多くの場合、解析して評価する必要があります。これらの式を使用して値を取得します。このタスクは、BeanShell インタープリターや ANTLR などのさまざまな方法を使用して実行できます。
BeanShell インタープリターの使用
BeanShell インタープリターは、文字列を評価するための強力なツールです。 Javaコードでした。数式を文字列として渡し、その結果を取得できます。
Interpreter interpreter = new Interpreter(); interpreter.eval("result = 5+4*(7-15)"); System.out.println(interpreter.get("result")); // Prints -14
BeanShell の使用は簡単ですが、文字列を任意のコードとして評価するため注意が必要です。入力文字列が検証され、信頼できることを確認してください。
ANTLR の使用
ANTLR (言語認識のための別のツール) は、次の目的で使用できる高度な言語解析フレームワークです。数式を解析します。文法を作成し、実行するアクションを定義することで、数学的ステートメントを解釈してその値を生成するパーサーを構築できます。
// Import ANTLR dependencies import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.tree.*; // Create a char stream from the expression string CharStream charStream = CharStreams.fromString("5+4*(7-15)"); // Generate a lexer that tokens the input Lexer lexer = new MathLexer(charStream); // Generate a parser that parses the tokens Parser parser = new MathParser(new CommonTokenStream(lexer)); // Parse the expression and generate a parse tree ParseTree tree = parser.statement(); // Perform semantic actions to evaluate the expression SemanticListener listener = new SemanticListener(); ParseTreeWalker.DEFAULT.walk(listener, tree); // Retrieve the result from the listener double result = listener.getResult(); // -14
ANTLR は、数式を解析するためのより安全で構造化されたアプローチを提供しますが、より多くの労力が必要です。セットアップします。
以上がJava で数式を文字列として解析および評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。