我目前正在使用二叉树在 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:
还是没有骰子。根据我朋友的建议尝试关闭流。没有效果。