2012-12-14 71 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文章中获得战利品。