IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

fonction de calcul [Attitude]


Sujet :

Java

  1. #1
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut fonction de calcul
    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

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    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.

  3. #3
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    c'est forcement une calculatrice mais fonction me permet de calculer ce genre des opération

  4. #4
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    457
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 457
    Par défaut
    Je ne comprends pas vraiment ce que tu recherches

  5. #5
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    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

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    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+

  7. #7
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    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 :

    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();
    		}
    	}
    }
    Edit : grillé par KiLVaiDeN

  8. #8
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    je veux juste un exemple d'une fonction qui permet de calcule ce genre des opération

  9. #9
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    MErci de ton explication.
    est ce qu'il ya d'autre solution sons avoir appeler js et d'utiliser java6????????

  10. #10
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Eh bien celle que j'ai précisé plus haut, à savoir faire une analyse syntaxique de ta chaine...

  11. #11
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    vous avez un exemple?

  12. #12
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    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+

  13. #13
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    Merci

  14. #14
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    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

  15. #15
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Pourquoi demandes-tu de nouveau la même chose ? Personne ne va faire le programme à ta place...

  16. #16
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    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...

  17. #17
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Je retire le delestage, car cette problématique peut aider d'autres personnes.

  18. #18
    Membre éclairé Avatar de mystro7200
    Inscrit en
    Juillet 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 245
    Par défaut
    ce code ça marche mais pas pour par ce que j'utilise pas java6!
    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();
    		}
    	}
    }
    j'ai besoin le même truc en java 1.4

  19. #19
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    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.

Discussions similaires

  1. Fonction de calcul (convertisseur)
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/12/2005, 18h24
  2. inversion de fonction de calcul
    Par jarko dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 16/12/2005, 18h31
  3. Réponses: 6
    Dernier message: 22/11/2005, 17h08
  4. Modifier un champs texte avec une fonction PHP (calcul TVA)
    Par Stella2809 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 00h55
  5. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo