这是我的代码:
double value = 2.55;
String formule = "x+x";
我希望将句子中的x变量替换为value
变量,所以我的下一个代码是:
formule = formule.replace("x", String.valueOf(value));
System.out.println(formule);
我在终端返回0.0+0.0
。
这是我的代码,其中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
是我班级的全局变量
答案 0 :(得分:5)
此代码(来自您的帖子) -
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
吗?看起来您必须访问另一个名为0
的变量(未按预期初始化 - 因此值value
)。