我目前正在使用二进制树在Java中编写问题游戏。我编写了所有必要的方法,但是我在代码中更改了一些内容,程序现在似乎在实际执行readLine()之前删除了要读取的文件的内容,从而导致NullPointerException。我真的很难过会发生什么事,任何解释都会非常感激!
文件本身位于包含内容(所有字符串)的正确目录中:
马 空值 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方法指定当值不等于“null”时会发生什么,但程序在第一次比较时崩溃,即使第一行是“Horse”
谢谢!
编辑1:
在String value = in.readLine()之后调用System.out.println(value),即使文件中的第一行是“Horse”,也会输出null!
编辑2:
仍然没有骰子。按照朋友的建议尝试关闭溪流。没有效果。
答案 0 :(得分:0)
可能这一行可能导致问题,
if (value.equals("null"))
您可以检查以下空值
if (value != null)