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

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

Nov 29, 2024 am 11:52 AM

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte 2025年のトップ4 JavaScriptフレームワーク:React、Angular、Vue、Svelte Mar 07, 2025 pm 06:09 PM

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

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

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

node.js 20:キーパフォーマンスが向上し、新機能 node.js 20:キーパフォーマンスが向上し、新機能 Mar 07, 2025 pm 06:12 PM

node.js 20:キーパフォーマンスが向上し、新機能

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

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

Iceberg:データレイクテーブルの未来 Iceberg:データレイクテーブルの未来 Mar 07, 2025 pm 06:31 PM

Iceberg:データレイクテーブルの未来

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正 Spring Boot Snakeyaml 2.0 CVE-2022-1471問題修正 Mar 07, 2025 pm 05:52 PM

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

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

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

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

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

See all articles