Existe-t-il un moyen en Java d’obtenir le résultat de cette expression mathématique:
String code = "5+4*(7-15)";
C'est-à-dire quel est le meilleur moyen d'analyser une expression arithmétique?
Existe-t-il un moyen en Java d’obtenir le résultat de cette expression mathématique:
String code = "5+4*(7-15)";
C'est-à-dire quel est le meilleur moyen d'analyser une expression arithmétique?
Vous pouvez le passer à un BeanShell bsh.Interpreter
, quelque chose comme ceci:
Interpreter interpreter = new Interpreter();
interpreter.eval("result = 5+4*(7-15)");
System.out.println(interpreter.get("result"));
Vous voudrez vous assurer que la chaîne vous évaluer est à partir d'une source de confiance et les précautions d'usage, mais sinon ça va marcher tout de suite.
Si vous voulez aller plus compliqué (mais plus sûr) approche que l'on pourrait utiliser ANTLR (que je soupçonne est une les mathématiques de la grammaire comme un point de départ) et de compiler et interpréter l'énoncé de vous-même.
J'ai récemment développé un analyseur d'expression et l'ai publié sous la licence Apache. vous pouvez le récupérer à http://projects.congrace.de/exp4j/index.html
espérons que cela a aidé
Vous pouvez utiliser la classe ScriptEngine et l'évaluer en tant que chaîne javascript.
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result = engine.eval("5+4*(7-15)");
En effet, vous devriez savoir que le résultat de l'instruction suivante en javascript:
eval('var aa=5+4*(7-15)')
aa // -27
Il y a peut-être un meilleur moyen, mais celui-ci fonctionne.
Probablement pas d'une manière aussi simple que vous l'espérez!
Mais peut-être pourriez-vous utiliser un javax.script.ScriptEngine et traiter la chaîne comme une expression ECMAScript, par exemple?
Jetez un coup d'œil à: Script pour la plate-forme Java .
Il n'y a pas de moyen intégré pour le faire. Mais vous pouvez utiliser l'une des nombreuses calculatrices open source disponibles.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.