如何在文件中递归打印? java的

时间:2015-11-22 13:03:38

标签: java

我正在做一个项目,我想在一个看起来像这样的文件中打印我的程序:

ExeStack:
Top of the stack as a string
Top-1 of the stack as a string
.......
Bottom of the stack as a string

SymTable:
var_name1 --> value1
var_name2 --> value2
....
Out:
value1
value2

我的方法saveToFile是:

public void saveToFile(PrgState prg) throws ExceptionRepo{

    PrintWriter bf = null;
    try{
        bf = new PrintWriter(new   FileOutputStream(("toyLanguage.txt"),true));
        bf.println("ExeStack: ");
        bf.println(prg.getStk());
        bf.println("SymTable: ");
        bf.println(prg.getDict());
        bf.println("Out: ");
        bf.println(prg.getList());
    }catch (Exception e){
        throw new ExceptionRepo("Error at writing to toyLanguage.txt file.");
    }
    finally{
        if(bf != null){
            bf.close();
        }
    }

}

我的文件现在具有以下结构:

ExeStack:
......
SymTable:
.......
Out:
.....

ExeStack:
......
SymTable:
.......
Out:
.....

我应该如何更改我的方法saveToFile,使文件的结构与第一个完全相同?我试图创建递归函数,但它不能很好地工作,现在我被困在这里。 有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将值列在每个标题上方吗?

唯一的解决方案是同时写下所有内容。 为此,您需要将先前的值保存在数组中,最后将它们全部写入文件:

总是在有新值时,将它们添加到数组中:

    exeStack_array add item prg.getStk()

当你想最终保存文件时,就这样做:

    bf.println("ExeStack: ");
    for each item in exeStack_array:
            bf.println(item );

对不起,其中大部分都是pseduo-code