0

コードが機能しない理由がわかりません。arraylist を使用してグラフを作成しようとしていますが、このコードは機能していないようです。arraylist からノード 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

これらは2つの間違いです:

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

そのはず:

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

「this」は呼び出しオブジェクトを参照するために使用されます。上のように書くと「このオブジェクトのid=id(引数1)」となります。

そして、あなたが質問に書いたように書くと、

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 に答える