gpt4 book ai didi

java - null 参数错误计算节点上的 id

转载 作者:行者123 更新时间:2023-12-02 10:36:42 25 4
gpt4 key购买 nike

因此,对于我的 cs 类,我们需要制作一个包含节点的家谱,其中两个节点作为根。每次创建节点时,它都有一个唯一的 ID,并且每个新节点的计数器都会不断增加。我有一个关于实例化类并将项目设置为 null 以及每次创建新节点时进行计数的问题。

public class Node<T> implements Comparable<Node<T>> {
// instance variables
static int instanceCounter = 0;
int id = 0;
private T element;
private Node<T> fparent;
private Node<T> sparent;
private List<Node<T>> children;


public Node() {
instanceCounter++;
id = instanceCounter;
this(null, null, null, null, null); // -> this does not work
}

public Node(T element) {
this.element = element;
instanceCounter++;
id = instanceCounter;
}

public Node(T element, Node<T> fparent, Node<T> sparent, List<Node<T>> children) {
instanceCounter++;
id = instanceCounter;
this.element = element;
this.setFparent(fparent);
this.setSparent(sparent);
this.setChildren(children);
}

但是这有效:

   public Node() {
this(null, null, null, null, null);
instanceCounter++;
id = instanceCounter;
}

我想要的是:

节点 1:Id = 1
节点 2:Id = 2
节点 3:Id = 3

但是当节点实例化时参数中没有任何内容时我得到的结果是:

节点 1:Id = 2
节点 2:Id = 3
节点 3:Id = 4

最佳答案

当您调用默认构造函数时,instanceCounter 会增加两次。您应该将默认构造函数代码更改为。

public Node() {
instanceCounter++;
id = instanceCounter;
//No call required here as all elements are already null
}

关于java - null 参数错误计算节点上的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com