gpt4 book ai didi

Java:为什么我的对象数组会覆盖循环内的所有先前数据?

转载 作者:行者123 更新时间:2023-11-30 08:18:59 25 4
gpt4 key购买 nike

我尝试创建一个节点数组,其中一个节点位于数组中的特定位置。

例如:
我在数组中添加一个节点并将其编号设置为 1。
我在数组中的下一个位置添加另一个节点并将其编号设置为 2。
现在两个节点都得到了数字 2。

代码示例:

public static String run(InputStream in) {

Scanner sc = new Scanner(in);

//indicating values
sc.nextInt(); /* int vertices = */
int edge = sc.nextInt();
int start = sc.nextInt();
int end = sc.nextInt();

if (start == end) {
sc.close();
Path = "yes";
} else {
nodes = new Node[edge + 1];
for (int i = 1; i < edge; i++) {

//Node values
int number = sc.nextInt();
int next = sc.nextInt();
sc.nextInt(); /* int distance = */

Node node = new Node(number, next);

if (nodes[number] == null) {
nodes[number] = (node);
} else {
nodes[number].addChild(next);
}
}
hasPath(nodes[start], end);

}
sc.close();

return Path;
}

节点代码示例:

import java.util.ArrayList;

public class Node {

private ArrayList<Integer> childs = new ArrayList<Integer>();

private static int number;

public Node(int n, int next){
number = n;
childs.add(next);
}

public int getNumber(){
return number;
}

public void addChild(int child){
childs.add(child);
}

谁能帮帮我?

最佳答案

问题在于声明number 成员static。这意味着 Node class 只有一个这样的成员,而不是每个 instance 都有自己的成员。只需将其定义为一个实例变量,就可以了:

public class Node {
private ArrayList<Integer> childs = new ArrayList<Integer>();
private int number; // Note the static was removed
// rest of the class

关于Java:为什么我的对象数组会覆盖循环内的所有先前数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079176/

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