2013-10-19 85 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