我想製作一個採用字符串公式的方法,並通過以非常小的間隔執行黎曼和來解決該公式的積分。我正在使用ScriptEngine和ScriptEngineManager類來評估函數(使用eval()方法)。出於某種原因,我得到這個錯誤:爲什麼eval類會給我一個從int到double的轉換錯誤?
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double at sum.integral(sum.java:31) at 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;
}
}
值得注意的是,對於(double i = lower; i
我不能爲我的生活想象爲什麼任何人會downvote這個問題。 Erik提供了他的代碼,他遇到的問題以及他收到的確切錯誤消息。 SO用戶可能會問什麼更多問題? –