java - java从文件中读取和写入表达式

标签 java file-io stack expression

您好,第一次使用这里的用户,不确定我这样做是否正确,但这里什么也没有。

我正在尝试通过从文件读取数学表达式,例如 3*(2+7)-9 或 11/5*(3+3),然后将答案写回文件。我不确定如何读取整个表达式,因为我只做了一些简单的事情,例如读取 3 个字符串并从文件中继续下一次。这个想法是使用从文件中读取的表达式并使用 java 中的堆栈来计算它们。我知道如何在不读取文件的情况下计算它,但不太确定如何将它们组合成一个工作程序,有什么想法或技巧吗?

最佳答案

这取决于您如何认为或知道数学表达式将写入文本文件中。如果这是一个仅包含由某个字符分隔的表达式的文件,那么您可以使用如下内容:

    ArrayList<String> expressions = new ArrayList<String>();
    try (Scanner s = new Scanner(new File("test.txt"))) {
        while (s.hasNextLine()) {
            String fullLine = s.nextLine();
            String[] expArray = fullLine.split(",");
            for (String exp : expArray) {
                expressions.add(exp);
            }
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

如果您不愿意,则不必将其打包到数组列表中。您可以计算它并将其直接打印到文件中。但这将获取文件的每一整行并将其分成每个逗号之间的字符串片段。

在这种情况下我只是假设有一个逗号。如果表达式之间用空格分隔,您可以绕过 .split() 并仅使用 s.next() 而不是 s.nextLine()

您还可以使用 Scanner 的 useDelimiter() 函数。将分隔符设置为分隔表达式的任何内容,然后当您使用 s.next() 时,它将为您提供分隔符之间的标记。

您还需要做更多的事情来实际解析表达式,因为它当前存储为字符串。那应该不会太难。

关于java - java从文件中读取和写入表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58667714/

相关文章:

c++ - RPN 计算器(将操作数应用于堆栈的问题)

Android,从 Activity 堆栈中清除 X 数量的 Activity

java - Appium:UiAutomator 意外退出,代码为 0,信号为 null

java - 获取您在 JPanel 上单击的位置的颜色?

java - 不使用 BufferedReader 计算一组字符在文件中出现的次数

file-io - 编写 netcdf4 文件比编写 netcdf3_classic 文件慢 6 倍,而文件大 8 倍?

c++ - 文件读写产生valgrind错误

java - 如何将 JDK 中的类链接到 scaladoc 生成的文档中?

java - 针对 docker 中的服务进行集成测试

recursion - 增加浏览器中的堆栈大小