0

次のコードに問題があります。コードが何をしているのか、または何を意図しているのかを見てみましょう。このcreateZooメソッドは次のことを行います。

  1. Cageオブジェクトの配列を作成します
  2. この配列の各インデックスに、2 つの動物オブジェクトで構成される交配ペア オブジェクトが追加されます。
  3. newZoo.add(cage[i])- これにより、ケージ オブジェクトがZooクラスの add メソッドに渡されます。Zooクラスのリストに追加されます。

Zooクラスでこのリストにアクセスしてケージ オブジェクトを取得すると、問題が発生します。取得されたケージ オブジェクトは正しくありません。あいまいで申し訳ありませんが、クラスのケージにcage[i]追加する引数を渡すとき、問題は上記のポイント 3 にあると思います。代わりにインデックスを渡す必要がありますか?List<Cage>Zoo

ありがとう。

 class algo{

    private int counter = 15;
    private Zoo newZoo = new Zoo();


    public void createZoo() {

        Cage[] cage = new Cage[counter];

        //initialize cage array with cage objects
        initializeCageArray(cage);

        while(counter>0) //outer while loop
        for(int i =0; i<counter; i++)
        {


            for(int x = 0,y = end of array;x<somecounter; x++, y--)
            {
                Animal animala = Animal.get(x)
                Animal animalb = Animal.get(y);


                cage[i].add(new MatingPair(animala, animalb));


            }

            //adds cage object to list container in zoo class
            //Am I passing the wrong thing here - maybe I need to pass an index?
             newZoo.add(cage[i]);        

            --counter;

        }




    }
4

1 に答える 1

0

のREFERENCECageに渡すことはまったく問題なくZoo、インデックスを に渡すよりも優れていcages[]ます。

クラスがオブジェクトZooで何かをしたい場合(おそらくすべてのケージを開きます!) を考えてみてください。どういうわけか、 の配列全体へのアクセスも許可します。CageCageindexcages[]Zoo

したがって、 の参照を直接渡した方がはるかに優れています。とにかくケージCage操作するには、参照が必要になるからです。

それが理にかなっていることを願っています。

于 2012-12-01T09:09:06.507 に答える