2015-06-10 21 views
0

我必須編寫一個接受三個參數和一個算術表達式(或方程)的方法。基於該方程,結果必須返回。但是,問題是這個方程是作爲一個字符串給出的,必須被轉換來做算術運算(我很困惑該怎麼做)。怎樣才能在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)); 
+1

根據「允許做X」和「應該做Y」你有什麼限制?你可以想象,這已經在許多次之前解決了。如果你需要以專業的角度來做這件事,那麼你只需要抓住其中一個庫。 – tucuxi

+0

@tucuxi謝謝反正我的問題解決了。可以使用一些java表達式求值器庫 –

回答

0

您需要將字符串解析爲有效的表達式,然後找到該值。看看遞歸下降解析器來開始。你可以使用第三方庫(如果你可以這樣做的話)

+0

感謝您的評論。它是最簡單的解決方案。是否有任何幫助庫在語言本身中完成它。 –

+1

看看這個SO帖子:http://stackoverflow.com/questions/3422673/evaluating-a-math-expression-given-in-string-form –

+0

Thanks.Can使用一些Java表達式評估器庫 –