从java文件读取和写入表达式
你好,这里的第一次用户不确定我是否做得对,但这里什么都没有从java文件读取和写入表达式,java,file-io,stack,expression,Java,File Io,Stack,Expression,你好,这里的第一次用户不确定我是否做得对,但这里什么都没有 我试图计算数学表达式,比如3*(2+7)-9或11/5*(3+3),方法是从文件中读取,然后将答案写回文件。我不确定如何读取整个表达式,因为我只做了一些简单的事情,比如读取3个字符串,然后从文件转到下一次。其思想是使用从文件中读取的表达式,并使用java中的堆栈进行计算。我知道了如何在不读取文件的情况下计算它,但不确定如何将其组合成一个单一的工作程序,有什么想法或提示吗?这取决于您如何思考或知道数学表达式将写入文本文件。如果这是一个仅包
我试图计算数学表达式,比如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();
}
ArrayList expressions=new ArrayList();
try(Scanner s=newscanner(新文件(“test.txt”)){
而(s.hasNextLine()){
字符串fullLine=s.nextLine();
字符串[]expArray=fullLine.split(“,”);
for(字符串exp:expArray){
表达式。添加(exp);
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}
如果不需要,不必将其打包到arraylist中。您可以计算并将其打印到文件中。但这将获取文件的每一整行,并将其拆分为每个逗号之间的字符串片段
在这种情况下,我只是假设一个逗号。如果表达式之间用空格分隔,可以绕过.split()
,只使用s.next()
而不是s.nextLine()
您还可以使用扫描仪的useDelimiter()
函数。将分隔符设置为分隔表达式的值,然后当您使用s.next()
时,它将为您提供分隔符之间的标记
您还需要做更多的工作来实际解析表达式,因为它当前存储为字符串。这应该不会太难 这取决于您认为或知道数学表达式将如何写入文本文件。如果这是一个仅包含由某个字符分隔的表达式的文件,则可以使用如下内容:
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();
}
ArrayList expressions=new ArrayList();
try(Scanner s=newscanner(新文件(“test.txt”)){
而(s.hasNextLine()){
字符串fullLine=s.nextLine();
字符串[]expArray=fullLine.split(“,”);
for(字符串exp:expArray){
表达式。添加(exp);
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}
如果不需要,不必将其打包到arraylist中。您可以计算并将其打印到文件中。但这将获取文件的每一整行,并将其拆分为每个逗号之间的字符串片段
在这种情况下,我只是假设一个逗号。如果表达式之间用空格分隔,可以绕过.split()
,只使用s.next()
而不是s.nextLine()
您还可以使用扫描仪的useDelimiter()
函数。将分隔符设置为分隔表达式的值,然后当您使用s.next()
时,它将为您提供分隔符之间的标记
您还需要做更多的工作来实际解析表达式,因为它当前存储为字符串。这应该不会太难 你能告诉我你试过什么吗。