54 votes

Méthode d'évaluation des expressions mathématiques en Java

Dans l'un de mes projets, je souhaite ajouter une fonctionnalité où l'utilisateur peut fournir une formule, par exemple

 sin (x + pi)/2 + 1

que j'utilise dans mon application Java

 /**
 * The formula provided by the user
 */
private String formula; // = "sin (x + pi)/2 + 1"

/*
 * Evaluates the formula and computes the result by using the
 * given value for x
 */
public double calc(double x) {
    Formula f = new Formula(formula);
    f.setVar("x", x);
    return f.calc();
    // or something similar
}

Comment évaluer des expressions mathématiques ?

11voto

Snicolas Points 19644

Cela dépend de la complexité des expressions que vous souhaitez évaluer, mais pour les expressions simples, java dispose d'un moteur javascript qui fonctionne plutôt bien :

 import javax.script.*;
public class EvalScript {
public static void main(String[] args) throws Exception {
    // create a script engine manager
    ScriptEngineManager factory = new ScriptEngineManager();
    // create a JavaScript engine
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    // evaluate JavaScript code from String
    Object obj = engine.eval("1+2");
    System.out.println( obj );
    }
}

Prograide.com

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.

Powered by:

X