我正在做一个项目,我想在一个看起来像这样的文件中打印我的程序:
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,使文件的结构与第一个完全相同?我试图创建递归函数,但它不能很好地工作,现在我被困在这里。 有任何想法吗?谢谢。
答案 0 :(得分:0)
如果我理解正确,您希望将值列在每个标题上方吗?
唯一的解决方案是同时写下所有内容。 为此,您需要将先前的值保存在数组中,最后将它们全部写入文件:
总是在有新值时,将它们添加到数组中:
exeStack_array add item prg.getStk()
当你想最终保存文件时,就这样做:
bf.println("ExeStack: ");
for each item in exeStack_array:
bf.println(item );
对不起,其中大部分都是pseduo-code