0

我不确定为什么我的代码不起作用。我正在尝试使用数组列表创建图形,但此代码似乎不起作用。每当我尝试从数组列表中获取节点 ID 时,它都会返回 0。我确定我刚刚做了一些笨拙的事情。谁能指出我的错误?

private ArrayList<Node> NodeList = new ArrayList<Node>();

public void addNode(int id, String Label, List connections) {   
    NodeList.add(new Station(id, Label, connections));
}

public ArrayList<Node> getNodes() {
    return NodeList;
}

然后在我的主要方法中(这些仅用于测试目的)

ArrayList<Integer> connections = new ArrayList<Integer>();
     connections.add(2);
     connections.add(5);
     g.addNode(6, "first",connections );

    System.out.println(""+g.getNodes().get(0).getID());

感谢小伙伴们的关注!这是车站类:

    private int id;
    private String stopName;
    private ArrayList connections;

    public Station(int id, String stopName, List connection) {
        id = this.id;
        stopName = this.stopName;
        setConnections(connection);
    }


    public List getConnections() {
        return connections;
    }



    public int getID() {

        return id;
    }


    public String getLabel() {

        return stopName;
    }
4

2 回答 2

6

这是两个错误:

id = this.id;
stopName = this.stopName;

它应该是:

this.id = id;
this.stopName = stopName;

看,'this' 用于指代调用对象。所以当你像上面这样写时,你说“这个对象的 id = id (argument one)”。

当你按照你在问题中写的那样写时,

id = this.id;

您正在更改“传递的参数 id”的值并为其分配对象 id 的值,其默认值为 0!这就是为什么你得到的结果为 0。

于 2013-10-12T22:54:45.860 回答
2

在您的构造函数中,分配是错误的方式。你要

public Station(int id, String stopName, List connection) {
    this.id = id;
    this.stopName = stopName;
    setConnections(connection);
}

代替

public Station(int id, String stopName, List connection) {
    id = this.id;
    stopName = this.stopName;
    setConnections(connection);
}
于 2013-10-12T22:54:38.640 回答