2013-01-14 26 views
-2

實現給定的一個文件與輸入外部公式

Formula: m = (y - c)/x 
Formula: m = y + c^2 

我想要實現在Java每個式在這種情況下我將結束與2個答案來求解米使得。我必須這樣做,因爲對於所有需要的配方,每種配方的編碼都會過於耗時。

到目前爲止我的代碼只是檢測和隔離每個公式。爲了解決這個問題,我也刪除了用戶輸入。

int y = 8; 
int c = 2; 
int x = 2; 

    try{ 
     FileInputStream fstream = new FileInputStream("Filename"); 

     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 

     while((strLine = br.readLine()) != null){ 
      if(strLine.startsWith("Formula")){ 
       String standAloneFormula = strLine.replace("Formula: ", ""); 
       System.out.println(standAloneFormula); 
      } 
     } 
    } 
    catch(Exception e){ 
     System.out.print(e); 

我遇到的主要問題是訪問代碼,然後將整數值應用於字符串值。什麼是最簡單的方法來解決,在這種情況下,m

任何想法,鏈接或相關的代碼將不勝感激。

問候。

+1

'c^2'是異或操作還是指數操作? –

+0

指數運算 – Digitalwolf

+0

你有變量x和y,但只有一個涉及x和y的方程... –

回答

1

嘗試使用composite pattern爲公式創建簡單對象模型。您可以將每個輸入行分解爲可能包含其他表達式作爲操作數的單個表達式。然後,您可以在所有類中定義方法calculate(HashMap<String, Integer> values),其中values只是您計算中可能出現的所有變量的定義。通過遞歸調用這個方法,你最終應該得到結果。

對於您希望支持的每個數學運算,您將需要一個類,例如,加法,減法,否定......

解析字符串並構造對象層次結構實際上是最困難的任務。用polish notation或更容易解析的東西會容易得多。

總的來說,使用更適合解決數學問題的工具而不是嘗試自己編寫代碼可能是值得建議的。也許甚至Excel可能會有幫助。

+0

感謝您的幫助。已經開始這樣做了,但有一個問題我目前無法解決。我已經將公式拆分爲m,=,(,y等,但是我需要比較我的數組中的y與我的y整數。你知道是否可以將整數名稱與數組的值一旦我完成了這個操作,我可以擔心數學運算和層次 – Digitalwolf

+0

呃...一個變量只是一個表達式所以你應該有一個'Variable'類,它的唯一字段是變量的名字這裏的'calculate(HashMap )'方法應該通過'containsKey(String)'在給定的HashMap中查找這個名字,然後返回找到的值。如果找不到任何值,則可以拋出異常,因爲您將永遠無法計算任何值。 –

+0

酷會嘗試這一點 – Digitalwolf

相關問題