这是我的代码:
double value = 2.55;
String formule = "x+x";
我想把句子中的x变量替换成value
变量,所以我的下一个代码是:
formule = formule.replace("x", String.valueOf(value));
System.out.println(formule);
并且我在终端中返回了CCD_ 2。
这是我的代码,其中x->0.0永远:
protected double Formule(Double Value) throws ScriptException
{
String ValueString = Value.toString();
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Double source = null;
formule = formule.replace("sin", "Math.sin").
replace("cos", "Math.cos").
replace("tan", "Math.tan").
replace("sqrt", "Math.sqrt").
replace("sqr", "Math.pow").
replace("log", "Math.log").
replace("x", ValueString);
try {
source = (Double)engine.eval(formule);
} catch(Exception exc) {
JOptionPane.showMessageDialog(null, "Invalid input", "Error", JOptionPane.ERROR_MESSAGE);
}
this.repaint();
return source;
}
已解决
我刚刚创建了一个名为tmp
的临时字符串,现在它看起来像这个
protected double Formule(Double Value) throws ScriptException
{
String tmp;
tmp = formule.replace("sin", "Math.sin").
replace("cos", "Math.cos").
replace("tan", "Math.tan").
replace("sqrt", "Math.sqrt").
replace("sqr", "Math.pow").
replace("log", "Math.log").
replace("x", String.valueOf(Value));
try {
return (Double)engine.eval(tmp);
} catch(Exception fexp) {
return null;
}
return 0;
}
因为String formule
是我的类中的全局变量
此代码(来自您的帖子)-
public static void main(String[] args) {
double value = 2.55;
String formule = "x+x";
formule = formule.replace("x",
String.valueOf(value));
System.out.println(formule);
}
打印
2.55+2.55
在这里跑步时。你确定你正在访问与上面初始化的相同的double value
吗?看起来您必须访问另一个名为value
的变量(该变量未按预期初始化,因此值为0
)。