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

値が「null」に等しくない場合に何が起こるかを指定する loadTree メソッドには他にもありますが、最初の行が「Horse」であっても、最初の比較でプログラムがクラッシュします。

ありがとうございました!

編集1:

String value = in.readLine() の後で System.out.println(value) を呼び出すと、ファイルの最初の行が「Horse」であっても null が出力されます。

編集2:

まだサイコロはありません。友人の提案に従って、ストリームを閉じようとしました。効果はありません。

4

1 に答える 1