0

我目前正在使用二叉树在 Java 中编写一个问题游戏。我已经编写了所有必要的方法,但是我在代码中进行了一些更改,现在程序似乎在实际执行 readLine() 之前删除了要读取的文件的内容,从而导致 NullPointerException。我实际上对正在发生的事情感到困惑,任何解释都将不胜感激!

该文件本身位于正确的目录中,其内容(所有字符串):

Horse null null (每个都在从顶部开始的单独行上)

程序崩溃后,文件为空。

这是错误:

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);
}

这是 loadTree 方法的摘录:

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

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

loadTree 方法还有更多内容可以指定当 value 不等于“null”时会发生什么,但是即使第一行是“Horse”,程序在第一次比较时也会崩溃

谢谢!

编辑1:

即使文件中的第一行是“Horse”,在 String value = in.readLine() 之后对 System.out.println(value) 的调用也会打印出 null!

编辑2:

还是没有骰子。根据我朋友的建议尝试关闭流。没有效果。

4

1 回答 1

0

可能这条线可能会导致问题,

if (value.equals("null")) 

你可以检查 null 如下

if (value != null)
于 2013-10-19T16:34:02.163 回答