ホームページ > Java > &#&チュートリアル > Java で数式を文字列として解析および評価するにはどうすればよいですか?

Java で数式を文字列として解析および評価するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-29 11:52:12
オリジナル
1001 人が閲覧しました

How Can I Parse and Evaluate Mathematical Expressions as Strings in Java?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート