通过Java在TXT文件中执行表达式



hi想知道是否有一种通过Java从文本文件执行代码行的方法。

例如,假设我有一个文本文件,在该文本文件中包含一个expression

int a = 1;
int b = 2;
int c;
c = a + b;

所以在我的主类中,我有一个文件对象,并且可以尝试/捕获

File file = new File("test.txt");
try {
    //code here
}catch (FileNotFoundException e) {
    System.err.format("File does not exist n");
}

我的目标是从test.txt运行代码并输出答案。我应该如何处理?

首先是 @d.b。评论:

您可以尝试使用JavAcompiler工具,但是,它需要JDK,因此,如果您将其上交以获得额外的信用,请确保您的讲师将使用JDK而不是JRE

运行它。

可以在运行程序时汇编时。它会像:

  1. 阅读文件。
  2. 撰写有效的Java应用程序。
  3. 编译它。
  4. 并开始在新线程上运行。

现在,基本上,您无法在文件上编写Java标准版表达式并加载以在运行时间执行。这是因为所有Java语句必须被解析并翻译成Java字节码,并且只能在程序开始运行之前完成。除了您构建另一个Java应用程序的情况外,将其编译并将其运行为新的应用程序调用,由您或某些Java系统调用。

Java虚拟机可以运行的唯一的是Java字节码。因此,您的文本文件未翻译成其,然后无法运行。虽然,这对于语言不正确,因为Python和JavaScript不需要将其翻译成机器语言,作为Java虚拟机的字节码和x86或x64处理器架构作为C 的语言的字节码。

您的解决方案是将解释的语言用作python和javaScript,而不是用作Java或C 的编译语言。正如@that的另一个人所指出的那样,如果您有兴趣学习它,则有脚本语言beanshell,它是一种类似Java的脚本语言。

参考:

  1. https://en.wikipedia.org/wiki/interpreted_language
  2. https://en.wikipedia.org/wiki/compiled_language
  3. https://en.wikipedia.org/wiki/scripting_language

我的目标是从test.txt运行代码并输出答案。我应该如何处理?

在Java中,要实现此目标,您可以使用自己的语法规则来解析文件。并由@Vince Emigh

说明

您需要某种形式的解析和语义分析来做到这一点。您是在问我们如何撰写口译员,并且看到您甚至没有发布尝试或指定实施此问题的特定问题,这是FAAAR太广泛的

以您的示例,就像:

text.txt

1
2
+

您的 Java源代码文件:

File file = new File("test.txt");
try
{
    BufferedReader br        = new BufferedReader( new FileReader( file ) )
    int            numbers[] = new int[10];
    String line;
    while( ( line = br.readLine() ) != null )
    {
        if( line.contains( "+" ) )
        {
            ... do stuff
        }
    }
}
catch( FileNotFoundException e )
{
    System.err.format("File does not exist n");
}
finally
{
    if( reader !=null )
    {
        reader.close();
    }
}

参考:

  1. 如何使用java读取大型文本文件?
  2. https://docs.oracle.com/javase/7/docs/api/java/io/filereader.html
  3. https://docs.oracle.com/javase/7/docs/api/java/io/file.html
  4. Java中是否有Eval()函数?

最新更新