有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我不能在文件中写我的二叉树?

在我的BinaryTree.java文件中的displayStudent()方法中,我试图将包含学生的二叉树写入一个文件。我的代码给了我一个错误。我尝试了许多不同的方法来编写这个文件,但都没有成功,因此我来到这里

这是我的Node.java文件:

class Node  {
Student data;
Faculty data2;
Node left;
Node right;

public Node(Student data) {
    this.data = data;
    this.left = null;
    right = null;
}

public Node(Faculty data2) {
    this.data2 = data2;
    this.left = null;
    this.right = null;
   }
}

这是我的BinaryTree.java文件:

    import java.io.*;

public class BinaryTree {
    public Node root; // Declaring Node that's a root.

    public void insertFaculty(Faculty faculty) { 
        root = insertFaculty(faculty,root); // Let root equal faculty being inserted.
    }

    private Node insertFaculty(Faculty faculty, Node t) {
        if(root == null) { // If the root is empty.
            return new Node(faculty); // Return a faculty node.
        } 

        // If inserted faculty last name is less than the current faculty last name
        if(faculty.getLastName().compareTo(t.data2.getLastName()) < 0) { 
            if(t.left == null) { // If the left node is empty.
                t.left = new Node(faculty); // Create a left a node that accepts a faculty name.
            } else {
                t.left = insertFaculty(faculty,t.left); // Insert faculty members to the left recursively.
            }
            return t; // Return node.
        } 

        // If inserted faculty last name is less than the current faculty last name.
        else if(faculty.getLastName().compareTo(t.data2.getLastName()) > 0) { 
            if(t.right == null) { // If the right node is empty.
                t.right = new Node(faculty); // Create a right a node that accepts a faculty name.
            } else {
                t.right = insertFaculty(faculty,t.right); // Insert faculty members to the right recursively.
            }
        }
        return t; // Return node.
    }

    public void insertStudent(Student s) { 
        root = insertStudent(s,root); // Let root equal student being inserted.
    }

    private Node insertStudent(Student s, Node t) {
        if(root == null) { // If the root is empty.
            return new Node(s); // Return a Student node.
        } 

        // If inserted student last name is less than the current student last name.
        if(s.getLastName().compareTo(t.data.getLastName()) < 0) {
            if(t.left == null) { // If the left node is empty.
                t.left = new Node(s); // Create a left a node that accepts a student name.
            } else {
                t.left = insertStudent(s,t.left); // Insert student members to the left recursively.
            }
            return t; // Return node;
        } 

        // If inserted student last name is greater than the current student last name.
        else if(s.getLastName().compareTo(t.data.getLastName()) > 0) {
            if(t.right == null) { // If the right node is empty.
                t.right = new Node(s); // Create a right a node that accepts a student name.
            } else {
                t.right = insertStudent(s,t.right); // Insert student members to the right recursively.
            }
        }
        return t; // Return name.
    }

    public Node studentDelete(Student s, Node t) {
        if(t != null) { // If t is empty.

            // If inserted student last name is less than the current student last name.
            if(s.getLastName().compareTo(t.data.getLastName()) < 0) { 
                t.left = studentDelete(s,t.left); // Left node will delete appropriate name recursively.
                // If inserted student last name is greater than the current student last name.
            } else if(s.getLastName().compareTo(t.data.getLastName()) > 0) {
                t.right = studentDelete(s,t.right); // Right node will delete appropriate name recursively.
            } else {
                if(t.left == null) { // If left node is empty.
                    return t.right; // Return right node.
                } else if(t.right == null) { // If right node is empty.
                    return t.left; // Return left node.
                }
            }
        }
        return t; // Return node.
    }

    public Node facultyDelete(Faculty faculty, Node t) {
        if(t != null) { // If t is empty.           
            // If inserted faculty last name is less than the current faculty last name.
            if(faculty.getLastName().compareTo(t.data2.getLastName()) < 0) { 
                t.left = facultyDelete(faculty,t.left); // Left node will delete appropriate name recursively.
                // If inserted faculty last name is greater than the current faculty last name.
            } else if(faculty.getLastName().compareTo(t.data2.getLastName()) > 0) {
                t.right = facultyDelete(faculty,t.right); // Right node will delete appropriate name recursively.
            } else {
                if(t.left == null) { // If left node is empty.
                    return t.right; // Return right node.
                } else if(t.right == null) { // If right node is empty.
                    return t.left; // Return left node.
                }
            }
        }
        return t; // Return node.
    }

    public void displayStudent(Node root) throws IOException { 
        if(root != null) { // If root isn't empty.
            displayStudent(root.left); // Recursively display left nodes.
            System.out.println(root.data.toString()); // Print to the console data that's in the root in order.
            displayStudent(root.right); // Recursively display right nodes.
        }   

        String file = "Student.txt"; // Student text file, this will be used to write in student information.
        FileWriter fw = null; // The file writer used to write in student information initially set to null.

        try {
            fw = new FileWriter(file, true); // Place file in FileWriter, true allows file to appended writer.
            for(int i = 0; i < 30; i++) { 
                fw.write(root.data.toString());
            }
            fw.close(); // Close file.
        } catch(FileNotFoundException e) {  // Exception will be thrown if the file isn't found.
            System.out.println("File not found!"); // Message will print if the file isn't found.
        }


    }

    public void displayFaculty(Node root) {
        if(root != null) { // If root isn't empty.
            displayFaculty(root.left);  // Recursively display left nodes.
            System.out.println(root.data2.toString()); // Print to the console data that's in the root inorder.
            displayFaculty(root.right); // Recursively display right nodes.
        }
    }
}

这是我的Main.java文件:

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        Student student1 = new Student("Mike", "Piazza", "S3123456");
        Student student2 = new Student("Jack", "Jill", "S3123456");
        Student student3 = new Student("Alice", "Jones", "S3123456");

        BinaryTree bt = new BinaryTree();
        bt.insertStudent(student1);
        bt.insertStudent(student2);
        bt.insertStudent(student3);
        bt.displayStudent(bt.root);
       }
     }

这是我的Student.txt文件:

null null null null null null null

这是我在控制台中看到的error

Exception in thread "main" java.lang.NullPointerException
at BinaryTree.displayStudent(BinaryTree.java:118)
at BinaryTree.displayStudent(BinaryTree.java:107)
at BinaryTree.displayStudent(BinaryTree.java:107)
at Main.main(Main.java:13)

共 (0) 个答案