Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java文件读取和写入表达式_Java_File Io_Stack_Expression - Fatal编程技术网

从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()
时,它将为您提供分隔符之间的标记


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

你能告诉我你试过什么吗。