2012-11-06 88 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

相關問題