我必須編寫一個接受三個參數和一個算術表達式(或方程)的方法。基於該方程,結果必須返回。但是,問題是這個方程是作爲一個字符串給出的,必須被轉換來做算術運算(我很困惑該怎麼做)。怎樣才能在java中有效地解決這個問題。下面給出了相同的代碼。使用java語言動態計算表達式(或方程)的值
public static void main(String[] args) {
System.out.println(getResult(2,3,5,"(a+b)*c/(a+c)"));
}
static double getResult(int a,int b,int c,String expr)
{
//double result=(a+b)*c/(a+c);
double result=expr;
return result;
}
這裏的getResult方法必須接受三個整數和等式作爲string.It將是巨大的,如果有人能提出解決方案或有效地解決這個問題的另一種方式。
感謝大家的建議。重寫了使用Javaluator庫的代碼。
StaticVariableSet<Double> variablelist = new StaticVariableSet<Double>();
variablelist.set("a", 2.0);
variablelist.set("b", 3.0);
variablelist.set("c", 5.0);
System.out.println(new DoubleEvaluator().evaluate("(a+b)*c/(a+c)",variablelist));
根據「允許做X」和「應該做Y」你有什麼限制?你可以想象,這已經在許多次之前解決了。如果你需要以專業的角度來做這件事,那麼你只需要抓住其中一個庫。 – tucuxi
@tucuxi謝謝反正我的問題解決了。可以使用一些java表達式求值器庫 –