Forum Clubic

[Java] Variable+operateur [Résolu]

J’ai une variable (String) qui est un operateur (+, -, *, / ou ^).

Comment faire pour l’utiliser pour faire une opération.

Merci bcp.

Genre comme ça :

if ( "+"equals(plus) ) return op1 + op2;

?

Bonjour,
c’est pas trivial ton truc: tu veux interpréter du code contenu dans une String alors:

  • soit tu n’a vraiment qu’un opérateur, ou un contenu simple et tu parse à la main: tu test l’opérateur pour faire l’op au cas par cas.
  • soit tu trouve un moyen pour interpréter une expression à l’aide d’un outils tiers: soit du Java interprété, soit un autre langage (jython n’est pas un interpréteur?)

précise le besoin
:slight_smile:

edit: sans-nom a été plus rapide: c’était ce que j’appelle parser à la main son truc.

disons que je ne sais pas au debut quel operateur ca va etre … je ne dois le faire qu’en java.

Merci Sans-Nom j’avais deja cette solution mais elle est un peu lourde. Il n’y en a pas dotre plus legere?

Merci pour vos reponses.

josehsartre> HashMap du genre


interface Operator {
  public double eval(double a, double b); 
}
class Evaluator
{
  private static final Map<String, ? implements Operator> op = new   HashMap<String, ? implements Operator>();
static {
  map.put("+", new OperatorPlus());
  map.put("-", new OperatorMinus());
  map.put("*", new OperatorMultiply());
  map.put("/", new OperatorDivide());
  map.put("^", new OperatorPow());
}
  private Evaluator() {}
  public static double eval(String operator, double a, double b)
  {
     Operator op = map.get(operator);
     if (op == null )
       throw new IllegalArgumentException( "'" + operator + "' is not a legal operator");
     return op.eval(a, b);
  }
}

(y a pas de mérite, j’ai fais un truc du même genre lundi)

Merci bcp … ca marche parfaitement … merci Sans-Nom

de rien :slight_smile:

Tu peux même faire carrément des classes anonymes voir un enum :slight_smile: