2012-11-06 42 views
0

我在完成我的BST和Trie在java中的最后一个步骤,我遇到了这个问题。我无法将最后一个元素打印到文件中。这不是toString方法,因为我尝试过切换它们。我记得有一段时间,我的一位教授提到了关于关闭文件的一些内容。一些沿着close方法括号内的int值的行,我会在下面展开(不知道我是否正确思考,只是我依稀记得) 下面是代码片段,有麻烦的。为什么我的最后一个元素不打印?

 try{ 
      output = new PrintWriter(inputFile); 

      output.println("BST:"); 
      output.println(tree.toString()); 
      output.println("Trie:"); 
      output.println(trie.myToString()); 


      output.close(); 

     } 
      catch(IOException e){} 
     System.out.println("Goodbye");  

所以如果我记得正确的话,老师说要做一些类似output.close(0)之类的事情,但它是在给我拍摄错误。谁能帮我这个?谢谢。

+2

理想的原因,你会放一个'终于{{IF output.flush()(输出!= NULL); output.close();}'权后收盘你最后一个catch块的大括号。这将确保您释放该文件。这就是说,你需要提供更多关于你的最后一个元素不是正在打印的信息。 – npinti

+0

由于npinti说你需要更多的细节,最后是结束事情的方式。 – Tom

+0

对不起,如果我没有正确地说出我的陈述, 最后一个元素我的意思是我的意思是我打电话的最后一个printLn会打印到屏幕上,但不会打印到我的文件中,以防我将这些打乱了。 – Ceelos

回答

1
catch(IOException e){} 

你在这里吞咽的原因。不要这样做。

至少打印与

catch(IOException e) { 
    e.printStackTrace(System.err); 
} 
+0

我还没有完成它。我打算在将其纳入之前包含所有内容。 谢谢,尽管我非常感谢。 – Ceelos

+1

如果你现在有问题,你现在应该包括它,对吧? – eis

+0

请阅读此:[隐藏错误](http://en.wikipedia.org/wiki/Error_hiding) – wulfgarpro

0

尝试

output.flush() 

之前关闭输出

,或者尝试

output = new PrintWriter(inputFile,true); 
+0

谢谢,我现在就试试。 – Ceelos

+2

关闭应该调用flush - 这不会是问题。 – Tom

+0

是的,你是对的汤姆 – Ceelos

相关问题