【问题标题】:reading and writing expressions from file for java从文件中为java读取和写入表达式
【发布时间】:2020-02-28 06:02:29
【问题描述】:
您好,第一次来这里的用户不确定我是否做得对,但这里什么都没有。
我正在尝试通过从文件中读取数学表达式,例如 3*(2+7)-9 或 11/5*(3+3),然后将答案写回文件。我不确定如何读取整个表达式,因为我只做了简单的事情,比如读取 3 个字符串并从文件中进入下一次。这个想法是使用从文件中读取的表达式并使用java中的堆栈计算它们。我知道如何在不读取文件的情况下计算它,但不确定如何将它们组合成一个单独的工作程序,有什么想法或提示吗?
【问题讨论】:
标签:
java
file-io
stack
expression
【解决方案1】:
这取决于您如何认为或知道数学表达式将写入文本文件中。如果这是一个仅包含由某个字符分隔的表达式的文件,那么您可以使用如下内容:
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() 时,它将为您提供分隔符之间的标记。
您还需要做更多的工作来实际解析表达式,因为它当前存储为字符串。那应该不会太难。