Bonjour ,
j'ai besoin d'une founction qui permet de calculer des operation par exemple:
(1+2)/5=return resultat
(5+3)-(2/3+5)/2= return resultat
MErci
Bonjour ,
j'ai besoin d'une founction qui permet de calculer des operation par exemple:
(1+2)/5=return resultat
(5+3)-(2/3+5)/2= return resultat
MErci
La fonction est toujours la même, seuls les paramètres changent ?
Ou alors tu cherches un interpréteur style "calculatrice" avec une fonction quelconque ?
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
c'est forcement une calculatrice mais fonction me permet de calculer ce genre des opération
Je ne comprends pas vraiment ce que tu recherches![]()
Désoler
c'est pas forcement une calculatrice mais fonction me permet de calculer ce genre des opération
(1+2)/5=return resultat
(5+3)-(2/3+5)/2= return resultat
En gros, tu veux évaluer le résultat d'un calcul qui serait fourni en paramètre de ta fonction dans une String par exemple, et en retourner le résultat, c'est bien ça ?
Il faut t'interesser, si tel est le cas, aux "Arbres Syntaxiques" pour décomposer ton calcul en éléments distincts de type "Opérateur" et "Opérande".
C'est une tâche complexe, car il faut alors faire jouer la priorité des opérateurs, et ton programme deviendra vite compliqué.
Une autre solution, plus simple eventuellement, c'est de t'interesser à la nouvelle notion introduite dans les derniers JDK qui est "le scripting", dont voici un lien, mais si tu es débutant en Java, tu vas peut-être avoir un peu de mal à mettre celà en place.
Dans quel objectif souhaites-tu faire ceci ?
A+
Bonjour,
Utilises-tu Java 6?
Si oui tu pourrais utiliser l'API de scripting de Java 6 pour appeler la fonction eval javascript qui me semble correspondre à ton besoin.
Voilà un exemple :
Edit : grillé par KiLVaiDeN
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class EvalJavascript { public static double eval (String formule) throws ScriptException{ // création a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // création JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // Evaluation Formule return (Double)engine.eval("eval("+formule+");"); } public static void main(String[] args) { try{ System.out.println(EvalJavascript.eval("(1+2)/5")); //renvoie 0.6 System.out.println(EvalJavascript.eval("(5+3)-(2/3+5)/2")); //renvoie 5.166666666666666 }catch (ScriptException e) { e.printStackTrace(); } } }
je veux juste un exemple d'une fonction qui permet de calcule ce genre des opération
MErci de ton explication.
est ce qu'il ya d'autre solution sons avoir appeler js et d'utiliser java6????????
Eh bien celle que j'ai précisé plus haut, à savoir faire une analyse syntaxique de ta chaine...
Hmm un exemple simple pour faire un arbre syntaxique ça n'existe pas, c'est de l'algorithmie assez complexe...
Il existe des outil d'analyse lexicale, par exemple JLex. Leur but est de décomposer ta chaine en bout, et en fonction du bout, d'appliquer une méthode particulière.
C'est comme si je te donnais "25+26" et que ton programme, divisait ça en 3 : "25" "+" "26".
Tu sais que 25 est un chiffre, donc tu le mets de coté en tant qu'opérande.
Tu sais que "+" est un opérateur. Tu le garde de coté car il y a besoin d'une deuxième opérande.
Tu prend le 26, puis vu que tu as déjà un opérateur, tu utilises la méthode correspondante au "+", en lui passant en paramètre les deux opérandes.
En gros voila l'algorithme, qui comme tu l'imagines, devient complexe au fur et à mesure des choses à gérer : parenthèses, priorités des opérateurs, etc...
Un système de pile peu également t'aider, car avec un système de pile de type RPN ( chercher un peu sur google ) en gros, tu appliques tes opérations de calculs sur les éléments de la pile.
Je ne peux pas t'en dire plus, il faut faire des recherches sur les arbres syntaxiques, sur l'analyse lexicale, etc... C'est loin d'être simple, sans toutefois être hors du commun.
A+
je cherche une fonction qui donne le résultat des opération de ce type:
(1+2)/5=return resultat
(5+3)-(2/3+5)/2= return resultat
Pourquoi demandes-tu de nouveau la même chose ? Personne ne va faire le programme à ta place...
Si tu ne donnes pas de nouvelles explications, tu n'auras pas plus d'informations.
Tu postes exactement la même chose qu'au 1er message, alors que tu as eu plusieurs réponses depuis. On ne va pas beaucoup avancer de cette manière...
Je retire le delestage, car cette problématique peut aider d'autres personnes.
ce code ça marche mais pas pour par ce que j'utilise pas java6!
j'ai besoin le même truc en java 1.4
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class EvalJavascript { public static double eval (String formule) throws ScriptException{ // création a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // création JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // Evaluation Formule return (Double)engine.eval("eval("+formule+");"); } public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println(EvalJavascript.eval(br.readLine())); //renvoie 0.6 }catch (ScriptException e) { e.printStackTrace(); } } }
Il y a moyen de faire la même chose , à savoir appeler la fonction eval de Javascript en Java 1.4, en utilisant la librairie Mozilla Rhino.
Je te laisse voir sur le site dont j'ai donné le lien, il y a des exemples.
Partager