2013-10-19 105 views
0

我目前正在用二叉樹編寫Java遊戲。我寫了所有需要的方法,但是我在代碼中改變了一些東西,程序現在似乎在實際執行readLine()之前刪除了要讀取的文件內容,導致NullPointerException異常。我實際上難以理解發生了什麼,任何解釋都將非常感謝!將文件轉換爲BinaryTree

文件本身與內容(所有字符串)正確的目錄:

馬 空 空(每個是從頂部開始的單獨一行)

程序崩潰後,文件是空的。

這是錯誤:

Exception in thread "main" java.lang.NullPointerException 
at animalgame.BinaryTree.loadTree(BinaryTree.java:63) 
at animalgame.AnimalGame.<init>(AnimalGame.java:26) 
at animalgame.AnimalGameTester.main(AnimalGameTester.java:21) 

Java結果:1

這是我的構造函數的調用:

AnimalGame game = new AnimalGame(); 

這是構造:

public AnimalGame() throws FileNotFoundException, IOException 
{ 
    this.in = new BufferedReader(new FileReader("C:\\Users\\andre_000\\Desktop\\knowledge.txt")); 
    this.out = new BufferedWriter(new FileWriter("C:\\Users\\andre_000\\Desktop\\knowledge.txt")); 
    this.gameTree = BinaryTree.loadTree(this.in); 
} 

而這對於Known Issues已知的方法的摘錄:

public static BinaryTree loadTree(BufferedReader in) throws IOException 
{ 
    String value = in.readLine(); 

    if (value.equals("null")) 
    { 
     return NIL; 
    } 

還有更多的指定當值不等於「零」發生什麼Known Issues已知的方法,但在第一次比較程序崩潰,即使第一線「馬」

謝謝!

編輯1:

字符串值後爲System.out.println(值)的調用= in.readLine()打印出空,即使文件中的第一行是「馬」!

編輯2:

仍然沒有骰子。根據我朋友的建議試圖關閉溪流。沒有效果。

+0

哪個是二叉樹類的第63行? – Ezzored

+0

它的行if(value.equals(「null」))。對於缺少編號感到抱歉。 – Zeke

回答

0

可能這條線可能會引起問題,

if (value.equals("null")) 

您可以檢查空,如下

if (value != null) 
+0

該文件實際上包含字符串「null」來標記二叉樹的端點。這些檢查在程序的某一點上運行正常,但是使用上述設置,由於某種原因,im崩潰 – Zeke