Heim >Java >javaLernprogramm >Wie kann ich mathematische Ausdrücke als Zeichenfolgen in Java analysieren und auswerten?
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!