Originariamente inviato da itised
voglio solo vedere se "x operatore y" è vera o meno.
Ma se vuoi sapere se l'espressione è "vera" o no, devi per forza "interpretare" il contenuto della stringa e capire quale operatore è e poi eseguire a tutti gli effetti una comparazione tra i due valori.
Se non ti piace la catena di if, allora ci sono altre soluzioni. Come ad esempio usare le interfacce e una Map, ecco un esempio banale che ho buttato giù:
codice:
import java.util.*;
public class Prova
{
public static void main (String[] args)
{
Operazioni oper = new Operazioni ();
System.out.println (oper.test (12, "<", 16));
System.out.println (oper.test (10, ">", 16));
}
}
class Operazioni
{
private HashMap<String,OperatoreRelazionale> map;
public Operazioni ()
{
map = new HashMap<String,OperatoreRelazionale> ();
map.put ("<", new OperatoreRelazionale () {
public boolean valuta (double x, double y) {
return x < y;
}
});
map.put (">", new OperatoreRelazionale () {
public boolean valuta (double x, double y) {
return x > y;
}
});
}
public boolean test (double x, String operatore, double y)
{
OperatoreRelazionale op = map.get (operatore);
if (op == null)
throw new IllegalArgumentException ();
return op.valuta (x, y);
}
}
interface OperatoreRelazionale
{
boolean valuta (double x, double y);
}