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.
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
javaer
 
Ah ok!
Merci.
0
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