【问题标题】:Reference trouble参考麻烦
【发布时间】:2012-11-30 23:18:38
【问题描述】:

以下代码有问题。让我来看看代码正在做什么或打算做什么。 createZoo 方法执行以下操作:

  1. 它创建了一个 Cage 对象数组
  2. 向该数组的每个索引添加一个由两个动物对象组成的配对对象
  3. newZoo.add(cage[i]) - 这会将笼子对象传递给 Zoo 类中的 add 方法。它被添加到Zoo 类的列表中。

当我在Zoo 类中访问此列表以检索笼子对象时,就会出现问题。检索到的笼子对象是不正确的。抱歉这里含糊不清,但我认为问题出在上面的第 3 点,当我将参数 cage[i] 添加到 Zoo 类中的 List<Cage> 笼子时。我应该传递一个索引吗?

谢谢。

 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;

        }




    }

【问题讨论】:

  • 什么是y = end of array?这是您的实际代码吗?
  • 不只是循环中的伪代码
  • 我的主要问题是:如果我将一个由数组中的某个索引引用的对象(如cage[i])传递给一个将其添加到cage对象列表的方法,该列表是否能够正确引用这个?还是需要向列表发送某种形式的索引才能正确引用它?
  • cage[i] 添加到列表没有任何问题。这将传递对数组的 ith 元素的引用。
  • 你永远不会传递对象——你总是传递引用。将cage[i] 指定为参数将传递存储在cage 数组的第i 个条目中的引用。程序员在描述事物的方式上经常“松散”,但在你第一次学习时学会准确地说话很重要。

标签: java reference parameter-passing


【解决方案1】:

CageREFERENCE 传递给Zoo 是完全可以的,这比将索引传递给cages[] 更好。 p>

现在想一想,如果Zoo 类想要对Cage 对象做某事(假设打开所有笼子!),那么他们将如何仅使用index 访问Cage 的对象。您还会以某种方式将整个cages[] 数组的访问权限授予Zoo

所以如果你直接传递Cage 的引用会更好,至于操纵笼子无论如何你都需要引用它。

希望它有意义。

【讨论】:

    猜你喜欢
    • 2012-07-01
    • 2011-01-16
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多