0

ループ内に複数のオブジェクトを作成する必要があります。それらをリストに追加するとこのタスクが達成されると他の場所で読みましたが、以下のコードでは、同じオブジェクトのコピーのセット、つまりすべて同じ値が得られます。同じオブジェクトのコピーだけでなく、複数のオブジェクトを作成する方法はありますか? ありがとうございました。

(以下のコードは、私が取り組んでいるものの簡略化されたバージョンです)

    System.out.println("Creating swarm of size "+swarmSize);
    List<Dog> myDogs = new ArrayList<Dog>();

    for(int i = 0; i < dogAmount; i++) {
        System.out.println("New Dog # "+i);
        myDogs.add(new Dog(i));
    }

    Dog first = myDogs.get(0);
    Dog other = myDogs.get(3);
    System.out.println(first.getID()+" "+other.getID());
    //prints out the number of dogs I should have created -1 both times

私の犬のクラス

import java.util.*;

public class Dog{
    public static int dogID;

    public Dog(int ID) {
        dogID = ID;
    }

    public int getID() {
    return dogID;
    }

    public void setID(int id) {
        dogID = id;     
    }
}
4

2 に答える 2

5

変化する

public static int dogID;

public int dogID;

またはさらに良いことに、

private int dogID;

ゲッター関数があるため、他のクラスはフィールドに直接アクセスする必要はありません。

于 2013-05-05T03:53:35.663 に答える
1

あなたが使用している:

public static int dogID;         //STATIC is the issue

これは、すべての犬が同じ dogID を持っていることを意味します。'static' を削除してみてください。(すべての犬には固有の ID があります)。

于 2013-05-05T03:55:41.720 に答える