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
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
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!