Calcul de la valeur en java

Javaer88 -  
 javaer -
Bonjour,
j'ai dans mon programme des string sous forme de calcul mathematique, exemple:
String s="(2+3)";

comment est-ce que je peux afficher la valeur de cette formule? qui est bien sur 5 :)
Merci d'avance.

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Pour simplifier on va dire que tu n'as que des opérateurs binaires + - * /
    Dans ce cas tu peux réécrire ta formule en forme infixe dans un arbre binaire.
    Il y a quelques difficultés notamment à cause de la priorités des opérateurs, mais ça se gère.
    Remarque : les parenthèses disparaissent dans l'arbre.
    Cet arbre est alors très facile à calculer, tu fais un switch sur l'opérateur à la racine et tu le calcules grâce aux deux opérandes arbre gauche et arbre droit que tu évalues récursivement.

    "(1+2)*(3-4)" devient "* + 1 2 - 3 4" en notation préfixe, ce qui donne les arbres :

       * 		  *		   *		-3
     +   - 	 	3   -		 3  -1		
    1 2 3 4	 	   3 4				

    La confiance n'exclut pas le contrôle
    1
  2. Javaer88
     
    Merci les amis pour vos reponses.

    apparemment je me suis pas bien exprimé, je veux savoir comment calculer une operation en java, une operation qui est un String. (meme une expression sans parentheses).

    String s1="5-2"; ou String s2="5+3";...
    comment faire pour trouver s1=3; s2=8;
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Sans traiter l'information tu ne peux pas.
      Pour le faire tu dois découper ta chaînes de caractères en opérateurs et opérandes par exemple en construisant un arbre comme je l'ai expliqué, c'est à partir de cet arbre que tu pourras calculer la valeur... Après si vraiment il ne s'agit que de une opération, tu peux essayer de parcourir ton string avec indexOf puis de le couper avec substring et enfin utiliser des valueOf
      0
    2. javaer
       
      Ah ok!
      Merci.
      0
  3. Utilisateur anonyme
     
    Bonjour ,

    j'ai jamais fait de java mais je crois que ceci devrais marcher :

    entier1 = new Integer( ); // tu met ton nombre entre parentheses
    entier2 = new Integer( ) //pareil ici

    somme = entier1 + entier2;
    -2