2012-12-14 68 views
-3

Hy我想繞過製作一個算術表達式解析器的過程,因爲從頭開始構建它有點難度,我也沒有編寫它的知識,我們也不允許使用其他材料。我提出了創建一個將代碼寫入其他類文件的類,從而繞過了字符串到表達式評估過程。如何加載外部類?

public void PrintCode(String filename,String a) { 
    PrintStream ps = null; 
    try { 
     ps = new PrintStream(filename); 
    } catch (FileNotFoundException ex) { 
     System.out.println("printWords: File open error: " + filename); 
    } 
     ps.println(i); 
     ps.println(" public int a = "+a + ";\n\n" + " public int geta()\n {\n return a;\n }" +"\n\n}"); 
     ps.close(); 

} 

a是字符串中給定的表達式。文件名用於例如:expression.java。 另一個好奇的是,java可以在代碼中計算這些表達式,但是沒有內置函數來評估給定的字符串類型表達式。我的問題是事實上這個代碼寫入在程序完成後保存,我需要寫入後重新加載類,或者在寫入後加載它,然後執行geta()方法進行計算。 另一件事是以某種方式從代碼重新啓動程序並從此處繼續。 我只是一個菜鳥,我們只學了這個學期的java ..所以如果這裏有什麼非常錯誤的,我很抱歉。並且提前感謝您的幫助!

編輯:我們沒有學習JavaScript,所以我們不能或不允許使用它...對不起。

+0

如果您生成評估表達式的代碼,您將如何處理表達式中的錯誤?生成的代碼甚至不會編譯。 –

+0

我並不需要錯誤處理,這是一個小項目,但如果無法完成,我會退出,如果我沒有其他選擇,就像我之前說過的那樣。 –

+0

會這樣的幫助嗎?: http://stackoverflow.com/questions/2902458/is-it-possible-to-pass-arithmetic-operators-to-a-method-in-java – jtyler

回答

0

你可以使用一些類似於ASM的庫來編寫Java的字節碼,但我的建議是使用ScriptEngine(Java 6+)接口來使用JavaScript或其他腳本語言來執行你的數學。

我將在此更新我的博客,因爲我將在我自己的項目中使用它。我將在帖子發佈時發表評論。

0

我會嘗試調查JavaCompiler類。在this文章中獲得戰利品。