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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?

高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?
