1

私は問題があります

オブジェクトのいくつかのクラスがあり、それらは「猫」「犬」などと呼ばれます.

これらのクラス内で、猫と犬の各オブジェクトに独自の整数エネルギー レベルを割り当てました (したがって、2 次元配列を "移動" すると、エネルギーが失われ、エネルギーが得られます)。this.energylevel と言って参照します。

「エネルギーレベル」は各オブジェクトに固有であるため、静的にすることはできません。「犬クラス」に、「猫クラス」内に静的に保存されていない猫オブジェクトのエネルギーレベルを表示させるにはどうすればよいですか?

Cat c = new Cat();そして、メインメソッド内ですでに行われている犬クラス内でインスタンス化することはできません。

これはすべて大規模なプロジェクトの一部であるため、十分に明確に説明していない場合はご容赦ください

4

1 に答える 1

0

Catオブジェクト内に静的メソッドを追加して、CatのIDに基づいて非静的変数を返すことができます。Catオブジェクト内の静的マップに猫のリストを保持する必要があります。

private static HashMap<String,Cat> cats = new HashMap<String,Cat>();
...
public static int getEnergy(String catId) {
    Cat myCat = cats.get(catId);
    return myCat.getEnergy();
}

public int getEnergy() {
    return this.energy()
}

または、要求に応じて、X、Yで検索する場合:

private static ArrayList<Cat> cats = new ArrayList<Cat>();

private int energy = 100;
private int x = 0;
private int y = 0;
...
public static int getEnergy(int x, int y) {
    //Energy of -1 being the error (not found) state.
    int energy = -1;
    for(Cat cat : cats) {
        if(cat.getX() == x && cat.getY() == y) {
            energy = cat.getEnergy();
        }
    }
    return energy;
}

public int getEnergy() {
    return this.energy()
}

public int getX() {
    return this.x;
}

public int getY() {
    return this.y;
}
于 2012-03-30T18:53:57.423 に答える