Heim >Java >javaLernprogramm >Wie kann ich mathematische Ausdrücke als Zeichenfolgen in Java analysieren und auswerten?

Wie kann ich mathematische Ausdrücke als Zeichenfolgen in Java analysieren und auswerten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-29 11:52:121001Durchsuche

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

So analysieren und bewerten Sie mathematische Ausdrücke als Zeichenfolgen in Java

Bei der Arbeit mit mathematischen Ausdrücken in Java ist es häufig erforderlich, diese zu analysieren und auszuwerten diese Ausdrücke, um ihre Werte zu erhalten. Diese Aufgabe kann mit verschiedenen Methoden gelöst werden, darunter dem BeanShell-Interpreter und ANTLR.

BeanShell-Interpreter verwenden

Der BeanShell-Interpreter ist ein leistungsstarkes Tool zum Auswerten von Zeichenfolgen, als wären sie waren Java-Code. Sie können damit mathematische Ausdrücke als Zeichenfolgen übergeben und das Ergebnis abrufen:

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

Die Verwendung von BeanShell ist unkompliziert, erfordert jedoch Vorsicht, da die Zeichenfolge als willkürlicher Code ausgewertet wird. Stellen Sie sicher, dass die Eingabezeichenfolge validiert und vertrauenswürdig ist.

ANTLR verwenden

ANTLR (ANother Tool for Language Recognition) ist ein hochentwickeltes Sprachanalyse-Framework, das verwendet werden kann mathematische Ausdrücke analysieren. Indem Sie eine Grammatik erstellen und die auszuführenden Aktionen definieren, können Sie einen Parser erstellen, der mathematische Aussagen interpretiert und ihre Werte generiert:

// 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 bietet einen sichereren und strukturierteren Ansatz zum Parsen mathematischer Ausdrücke, erfordert jedoch mehr Aufwand einrichten.

Das obige ist der detaillierte Inhalt vonWie kann ich mathematische Ausdrücke als Zeichenfolgen in Java analysieren und auswerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn