[英]How to convert String to math expression and evaluate using a variable?
[英]Evaluate math formula from String using ScriptEngine
這是我的代碼:
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
是我班上的全局變量
此代碼(來自您的帖子)-
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
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.