Maison > Java > javaDidacticiel > Comment puis-je analyser et évaluer des expressions mathématiques sous forme de chaînes en Java ?

Comment puis-je analyser et évaluer des expressions mathématiques sous forme de chaînes en Java ?

Mary-Kate Olsen
Libérer: 2024-11-29 11:52:12
original
1060 Les gens l'ont consulté

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

Comment analyser et évaluer des expressions mathématiques sous forme de chaînes en Java

Lorsque vous travaillez avec des expressions mathématiques en Java, il est souvent nécessaire d'analyser et d'évaluer ces expressions pour obtenir leurs valeurs. Cette tâche peut être réalisée à l'aide de diverses méthodes, notamment l'interpréteur BeanShell et ANTLR.

Utilisation de l'interpréteur BeanShell

L'interpréteur BeanShell est un outil puissant pour évaluer les chaînes comme si elles étaient du code Java. Il vous permet de transmettre des expressions mathématiques sous forme de chaînes et de récupérer le résultat :

Interpreter interpreter = new Interpreter();
interpreter.eval("result = 5+4*(7-15)");
System.out.println(interpreter.get("result")); // Prints -14
Copier après la connexion

L'utilisation de BeanShell est simple mais nécessite de la prudence car elle évalue la chaîne comme du code arbitraire. Assurez-vous que la chaîne d'entrée est validée et fiable.

Utilisation d'ANTLR

ANTLR (UN autre outil pour la reconnaissance du langage) est un cadre d'analyse de langage sophistiqué qui peut être utilisé pour analyser des expressions mathématiques. En créant une grammaire et en définissant les actions à effectuer, vous pouvez créer un analyseur qui interprète les déclarations mathématiques et génère leurs valeurs :

// 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
Copier après la connexion

ANTLR offre une approche plus sécurisée et structurée pour analyser les expressions mathématiques, mais nécessite plus d'efforts pour mis en place.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal