public class Evaluator
extends java.lang.Object
Constructor and Description |
---|
Evaluator()
|
Modifier and Type | Method and Description |
---|---|
static double |
calcRPN(Token[] list)
|
static double |
calculate(java.lang.String expr)
|
private static double |
operamos(double n,
double n2,
char op)
|
public static double calculate(java.lang.String expr)
expr
- Conjunto de tokens que recibimos desordenadosEste metodo lo que hacemos es ordenar la expresion que recibimos en anotación "Polaca inversa"
Para ello, lo que hacemos es ir token a token leyendo que tipo es, si es un numero, lo añadimos a la lista output, si es un operador lo que hacemos es añadirlo a la pila temporal quitando de la pila los que operadores que tengan menos precedencia y añadiendolos a output, una vez hemos acabado y los tenemos ordenados lo que hacemos es pasarlos al metodo CalcRPN el cual se encarga de retornarnos el resultado de dicha operación matematica.
public static double calcRPN(Token[] list)
list
- lista de tokens ordenados listos para calcularEste metodo lo que hace es ir posicion a posicion de nuestra lista leyendo cada token. Si ese token es un numero lo añadimos a la pila, si no lo que hacemos es (dependiendo del operador que sea) sacamos 1 o 2 numeros de la pila, operamos con ellos dependiendo del operador y añadimos el resultado a la pila. Esto hasta que no nos queden mas tokens a la lista y entonces sacaremos el ultimo valor que tendremos en la pila sera el resultado a retornar
private static double operamos(double n, double n2, char op)