Calcul Java

Résolu/Fermé
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 - 1 déc. 2012 à 00:27
Xmzd Messages postés 3 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 20 décembre 2012 - 20 déc. 2012 à 11:59
Bonjour,

Je voudrais savoir comment faire le calcul suivant :

ex :
int reponse;
char operateur = '*'
int a = 25
int b = 2

je voudrais que Java puisse faire le calcul de la multiplication (et autres operateur)

dans mon exemple ça serait :

reponse = a + operateur + b;

devrait donner 50 !
mais ca ne marche pas donc ! java prend la valeur du code UNICODE du caractère '*'

Merci !



A voir également:

5 réponses

totodunet Messages postés 1377 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 5 mars 2020 200
Modifié par totodunet le 14/12/2012 à 13:42
dans ce cas fais plutôt ça :
int reponse;
int a =25;
int b=2;
reponse = a*b;
return reponse;


Qui ne tente rien n'a rien
3
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 2
1 déc. 2012 à 01:03
ma méthode est celle-ci :

public static int calculer ( char operation, int op1, int op2 ){

int reponse = 0;

reponse = (op1 + operation + op2);

return reponse;

}

est-ce qu'il faudrait que j'utilise un String dans la méthode pour donner la valeur du char pour que je puisse faire l'opération demandée ?
1
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
1 déc. 2012 à 01:22
Tu ne peux pas faire obtenir le résultat simplement, en construisant le String tu aurais juste ton expression bien formée ("25*2" avec ton exemple), ce qu'il faut après c'est évaluer cette expression et c'est là qu'intervient le moteur JavaScript... À moins que tu ne veuilles refaire ce qui existe déjà et gérer tous les cas possibles mais c'est plus compliqué à mettre en place.

public static final ScriptEngine JavaScript = new ScriptEngineManager().getEngineByName("JavaScript");

public static double eval(String expr)
{
    try
    {
        Object obj = JavaScript.eval(expr);
        if (obj instanceof Double)
        	return (double) obj;
        else
        	return Double.NaN;
    }
    catch (ScriptException e)
    {
    	System.err.println(e);
    	return Double.NaN;
    }
}

public static int calculer(char operation, int op1, int op2)
{
	String expr = String.format("%d%c%d", op1,operation,op2);
	
	return (int) eval(expr);
}
	
public static void main(String[] args) throws ScriptException
{
	System.out.println(calculer('*',25,2));
}
0
thapipo Messages postés 12 Date d'inscription mercredi 6 juin 2012 Statut Membre Dernière intervention 21 février 2014 2
1 déc. 2012 à 01:45
humm Je t'avouerais que je suis débutant en Java, le hic c'est que je suis limité à utiliser les classes String & Character, mais MERCI beaucoup pour les réponses, j'essaierais de voir ce que je peux faire avec cela !
1
Xmzd Messages postés 3 Date d'inscription jeudi 20 décembre 2012 Statut Membre Dernière intervention 20 décembre 2012 1
Modifié par Xmzd le 20/12/2012 à 12:01
le plus simple selon moi reste le if ou le switch ensuite:

avec if:

public static int calculer(char operation, int op1, int op2)
{
if(operation=='*')
{
return (op1*op2);
}
return (0); //peut-etre pas judicieux de mettre 0 ici mais c'est une autre question
}

avec switch:

public static int calculer(char operation, int op1, int op2)
{
switch(operation)
{
case '+': return (op1+op2); break;
case '-': return (op1-op2); break;
case '*': return (op1*op2); break;
case '/': return (op1/op2); break;
default: return(0); //peut-etre pas judicieux de mettre 0 ici mais c'est une autre question
}
}

Le switch te permettant de rajouterd'autres opérateurs, ce qui reviendrait à faire plusieurs if.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
1 déc. 2012 à 00:42
Tu devrais construire ton expression sous forme de String puis utiliser un ScriptEngine pour l'évaluer, par exemple avec le moteur JavaScript :

public static void main(String[] args) throws ScriptException
{
	char operateur = '*';
	int a = 25;
	int b = 2;
	
	ScriptEngine JavaScript = new ScriptEngineManager().getEngineByName("JavaScript");
	double x = (double) JavaScript.eval(String.format("%d%c%d",a,operateur,b));
	
	System.out.println(x);
}
0