¿Por qué la clase eval me da un error de conversión de int a double?
Estoy tratando de hacer un método que tome una fórmula de cadena y resuelva la integral de esa fórmula haciendo una suma de Riemann con intervalos muy pequeños. Estoy usando las clases ScriptEngine y ScriptEngineManager para evaluar la función (con el método eval ()). Por alguna razón, recibo este error:
Excepción en el hilo "main" java.lang.ClassCastException: java.lang.Integer no se puede convertir a java.lang.Double en sum.integral (sum.java:31) en sum.main (sum.java:13)
import java.beans.Expression;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class sum {
//testing method
public static void main(String[] args) throws ScriptException {
double x = integral("5*x^2",0,5);
System.out.println(x);
}
public static double integral(String function, double lower, double upper) throws ScriptException
{
double total = 0;
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
//Solves function from upper to lower with a .001 interval, adding it to the total.
for (double i = lower; i < upper; i+=.001)
{
//evaluates the interval
engine.put("x",i);
total += (double)engine.eval(function);
}
return total;
}
}