Java est un langage compilé, pas interprété. Donc on n'est pas dans un monde dans lequel on peut s'amuser à "créer du code à la volée" (même si en Java, il y a des mécanismes qui rendent cela possible ; ceci dit, "possible" ne signifie pas "simple", bien au contraire).
Si ce que tu souhaites évaluer, c'est juste une expression mathématique, cela te sera plus simple de fabriquer une structure mémoire décrivant ton expression mathématique (c'est une forme de compilation). Par exemple sous forme d'arbre :
représenteront avantageusement l'expression "exp(2*(x+1))".
Chaque opérateur binaire (+, -, *, /, modulo) est transformé en un noeud de l'arbre à 2 noeuds fils, chaque opérateur unaire (- unaire pour obtenir l'opposé, et la plupart des fonctions mathématiques du genre sin, cos, exp, ln, ...) est transformé en un noeud à un seul fils, et les variables et les nombres littéraux sont transformés en noeuds sans aucun noeud fils (autrement dit, en feuilles de l'arbre).
Ensuite, une petite fonction d'évaluation qui parcourt récursivement ton arbre pourra te donner la valeur de la fonction pour une valeur quelconque de tes variables.
En plus, ce mécanisme te permettra de faire beaucoup d'autres traitements sur ta fonction mathématique que Java ne sait pas faire tout seul : par exemple, simplifier la fonction (0 * une expression bien compliquée = toujours 0 !), obtenir sa fonction dérivée, etc.
Message édité par BifaceMcLeOD le 24-10-2007 à 16:47:13