Java 请检查这些代码。它不像我预期的那样工作

Java 请检查这些代码。它不像我预期的那样工作,java,Java,代码没有像我想的那样工作。我试图重新编码,但仍然无法得到我希望的结果。代码如下: public class Node<T> { private List<Node<T>> children = new ArrayList<Node<T>>(); private Node<T> parent = null; private T data = null; private String a = "

代码没有像我想的那样工作。我试图重新编码,但仍然无法得到我希望的结果。代码如下:

public class Node<T> {

    private List<Node<T>> children = new ArrayList<Node<T>>();
    private Node<T> parent = null;
    private T data = null;
    private String a = "";

    public Node(T data) { //used to create parent
        this.data = data;
    }

    public Node(T data, Node<T> parent) {
        this.parent = parent;
        Node<T> child = new Node<T>(data);
        this.parent.children.add(child); 
    }

    public Node<T> getParent(Node<T> child){
        return child.parent;
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public int getSize(){
        return children.size();
    }

    public String toString(){
        for(int i=0; i<children.size();i++){
          a = a + parent.children.get(i).getData()+ ",";
        }
        return a ;
    }

    public T getData() {
        return data;
    }
}



import java.util.List;

public class main {

    public static void main(String[] args) {
        Node<String> parentNode = new Node<String>("Parent");
        Node<String> childNode1 = new Node<String>("Child 1", parentNode);
        Node<String> childNode2 = new Node<String>("Child 2", parentNode);
        List<Node<String>> ChildrenOfParents = parentNode.getChildren();
        System.out.println(ChildrenOfParents.size());
        System.out.println(ChildrenOfParents.toString());


    }

}
在这些代码行之后,我想知道为什么ChildrenOfParents.toString不会打印出这些孩子?那些孩子已经加入了ChildrenOfParents对吗?我对java还是新手。请引导我通过代码。我希望制作一个不受家庭成员限制的家谱。例如,如果遵循二叉树,父亲可以有很多儿子,而不是只有两个。谢谢


PS:谢谢你的回答:this.parent.children.addthis使程序工作。但我想知道为什么在调用带参数的构造函数时,第12行的this.parent.children.addchild不起作用?父项的children变量是否会将子项添加到列表中

您需要在第二个构造函数中将子对象添加到父对象中: 导入java.util.ArrayList; 导入java.util.List

public class Node<T> {

    private List<Node<T>> children = new ArrayList<Node<T>>();
    private Node<T> parent = null;
    private T data = null;

    public Node(T data) { //used to create parent
        this.data = data;
    }

    public Node(T data, Node<T> parent) {
        this.parent = parent;
        this.data = data;
        this.parent.children.add(this);
    }

    public Node<T> getParent(Node<T> child) {
        return child.parent;
    }

    public List<Node<T>> getChildren() {
        return children;
    }

    public int getSize() {
        return children.size();
    }

    public String toString() {
        String a = "";
        for (int i = 0; i < children.size(); i++) {
            a = a + children.get(i).getData() + ",";
        }
        return a;
    }

    public T getData() {
        return data;
    }
}

public class NodeApp {
    public static void main(String[] args) {
        Node<String> parentNode = new Node<String>("Parent");
        Node<String> childNode1 = new Node<String>("Child 1", parentNode);
        Node<String> childNode2 = new Node<String>("Child 2", parentNode);
        System.out.println(parentNode.getSize());
        System.out.println(parentNode.toString());
    }
}

请检查你的帖子的格式。而您的孩子renofparents.size应该为零。你没有添加任何内容。你没有在列表中添加任何项目。糟糕的标题。重写以总结您的具体技术问题。抱歉。我对StackOverflow和java都还是新手。我为我刚才做的所有坏事道歉。谢谢。我做了一些编辑,但我仍然无法打印出那些孩子。你有什么想法吗?请看实施