【问题标题】:Need help getting private attributes from another class when using Arraylist使用 Arraylist 时需要帮助从另一个类获取私有属性
【发布时间】:2015-02-07 20:35:46
【问题描述】:

我是一个相当新的程序员,我有一个问题。

我正在做一个狗注册,它必须至少有两个类(一个用于狗,一个用于实际程序),并且狗的属性必须是私有的。狗寄存器也必须使用数组列表来存储狗信息和添加/删除狗等等。

我的问题是,当我想向用户显示列表的所有元素时,我无法弄清楚如何让狗的属性被正确收听。

这是(缩小的)现在的样子:

  public class Dog {

        private String name;
        public Hund(String name) {
        this.name = name; 
        }

        public String getName() {
        return name;
        }
        public void setName(String name) {
        setName(name);
        }

        public void writeOut() {
        System.out.print(getName())
        }

还有这个类:主程序

        import java.util.ArrayList;

        public class DogRegister {

        private static ArrayList<Dog> dogs = new ArrayList<Dog>();

        //The part with the program and menus and such

        for(int ix = 0; ix < dogs.size(); ix++){    
            String elementName = dogs.get(ix);
            elementName.writeOut();

            } 
        }

我在最后一部分尝试做的是使用“writeOut”方法,以便写出狗的实际名称(和其他属性),而不是我在测试时得到的“Dog@2ad1e832”它与:

System.out.println(dogs.get(ix));

【问题讨论】:

  • dogs.get(ix);应该返回 Dog,而不是 String。除了这一行之外,保持相同的代码: Dog dog = dogs.get(ix);它会工作

标签: java arrays arraylist element private


【解决方案1】:

您可以override the toString() method 显示Dog 对象的外观:

    @Override  
    public String toString()
    {
        return name + "," + breed; // You can add other attributes here as well.
    }

只需将 toString() 方法放在您的 Dog 类中,您就可以开始了。

【讨论】:

    【解决方案2】:

    您需要使用dogs.get(ix).getName()。您正在尝试打印对象。

    【讨论】:

      【解决方案3】:

      你必须重写Dog类中的toString方法来改变System.out.println(dogs.get(ix));的输出
      例如:

      public class Dog {
          ...
      
          @Override 
          public String toString() {
              return name;
          }
      }
      

      【讨论】:

        【解决方案4】:

        如果我正确理解您的问题,请尝试将您的 for 循环替换为:

        for (Dog dog : dogs) {
          System.out.println(dog.getName())
        }
        

        或者,如果您想使用与原始循环相同的结构,请尝试以下操作:

        for (int ix=0; ix < dogs.size(); ix++) {
          Dog dog = dogs.get(ix);
          System.out.println(dog.getName());
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-10
          • 2020-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-03
          相关资源
          最近更新 更多