Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用数组列表和创建对象_Java_Arraylist_Pass By Reference - Fatal编程技术网

Java 使用数组列表和创建对象

Java 使用数组列表和创建对象,java,arraylist,pass-by-reference,Java,Arraylist,Pass By Reference,我正在努力理解如何将对象添加到数组列表中,以及相关的语法 回顾Java中的数组列表,“如何编程”第9版。它没有明确说明如何从测试类向数组列表添加对象。我简直不明白它们是如何传递/添加的 在我的例子中,我使用一个类Phonebook.java来定义默认和非默认构造函数,并使用一个测试类将这些对象添加到数组列表中 我的问题是,在测试类中添加这些对象的过程是什么,以及如何使用数组列表处理或初始化PhoneBook类中的这些对象 到目前为止,我的代码如下 Phonebook.java-> 公共类电话簿测

我正在努力理解如何将对象添加到数组列表中,以及相关的语法

回顾Java中的数组列表,“如何编程”第9版。它没有明确说明如何从测试类向数组列表添加对象。我简直不明白它们是如何传递/添加的

在我的例子中,我使用一个类Phonebook.java来定义默认和非默认构造函数,并使用一个测试类将这些对象添加到数组列表中

我的问题是,在测试类中添加这些对象的过程是什么,以及如何使用数组列表处理或初始化PhoneBook类中的这些对象

到目前为止,我的代码如下

Phonebook.java->

公共类电话簿测试 {

publicstaticvoidmain(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
ArrayListdirectory=新的ArrayList(5);
System.out.println(“欢迎使用您的电话簿”);
System.out.println(“向列表中添加条目”);
System.out.println();
电话簿x;
字符串num=null;
字符串名称=null;
对于(int i=0;i<5;i++)
{
System.out.println(“输入名称:”);
name=input.nextLine();
System.out.println();
System.out.println(“输入编号:”);
num=input.nextLine();
System.out.println();
PhoneBook newEntry=新电话簿(名称,num);
directory.add(newEntry);
}
}

向任何列表添加对象(ArrayList只是列表的一种实现)使用
add
方法。在您的示例中,将每个条目添加到ArrayList的末尾,
PhoneBookTest
如下所示:

class PhoneBookTest
{
  public static void main( String[] args )
  {
    List<PhoneBook> phoneBooks = new ArrayList<PhoneBook>( 5 );
    Scanner input = new Scanner (System.in);

    System.out.println ("Welcome to your Phone Book");
    System.out.println ("Add Entries to the list");
    System.out.println ();

    for (int i = 1; i < = phoneBooks.size(); i++)
    {
        System.out.println ("Enter Name: ");
        String name = input.nextLine();
        System.out.println();
        System.out.println ("Enter Number: ");
        String number = input.nextLine();
        System.out.println();

        PhoneBook newEntry = new PhoneBook( name, number );
        phoneBooks.add( newEntry );
    }
  }
}
   for(Phonebook myphonebook : directory)
类电话簿测试
{
公共静态void main(字符串[]args)
{
列表电话簿=新的ArrayList(5);
扫描仪输入=新扫描仪(System.in);
System.out.println(“欢迎使用您的电话簿”);
System.out.println(“向列表中添加条目”);
System.out.println();
对于(int i=1;i<=phoneBooks.size();i++)
{
System.out.println(“输入名称:”);
字符串名称=input.nextLine();
System.out.println();
System.out.println(“输入编号:”);
字符串编号=input.nextLine();
System.out.println();
电话簿newEntry=新电话簿(姓名、号码);
电话簿。添加(新条目);
}
}
}

在您的循环中,您是引用

Phonebook.getName() in an effort to set it.
您的代码需要访问电话簿实例,而不是静态引用它。 您还需要循环列表,而不是类电话簿

   for (int i = 1; i < = directory.size(); i++)
   {
   ((Phonebook) directory.get(i)).setName("setting name to this text!");
我认为您应该阅读Java类和迭代的基础知识

试试这个:

您是遇到了错误,还是只是想了解arraylist的基本工作原理?我建议您查看有关列表的更多信息。您还没有编写过任何只使用int/Integer作为参数的构造函数(您在main的第2行中的构造函数中传递了5)。您是否尝试创建电话簿对象数组?另外,根据打印的“向列表中添加条目”,您应该调用setter方法,而不是getter。在for循环条件检查中,您应该检查ArrayList名称。size()。嗯,我遇到了几个错误。我知道我的代码是垃圾。我根本不知道如何以这种方式使用数组列表。从另一个类调用一个对象,设置对象每个部分的输入,并将其添加到数组中。如果您只想预定义所有值并在主类中声明它们,那么这很容易,但是变得很棘手,需要(我认为)比我掌握的更多的经验/知识。不幸的是,我所拥有的java书籍和我正在学习的课程没有强迫我们编写测试类……所以现在当我不得不这样做时,我迷失了方向(Avik,是的,我正在尝试制作一个电话簿对象数组。我们还没有被介绍到“列表”中。这只是简单地使用数组列表。所以我现在正在尝试理解它。不过我很感谢你的评论。这不是问题。你可以在我放置的任何地方使用
ArrayList
。我只是习惯于引用到接口而不是类。你最终会到达那里的!有趣的是…程序运行了,但它从不要求我输入。我猜有两件事中的一件…我应该在每次代码运行时创建一个新对象,然后使用“添加”函数在从用户获得输入后将这些元素添加到数组的该部分吗?我就是这样吗此处缺失?
新建ArrayList(5)
不足以让
ArrayList
有5个条目。你必须声明一个大小变量,并在构建列表和循环输入时使用它。我明白你的意思。如果我按原样运行,它似乎永远运行,除非我按ctrl-z键,它会出错。我只是将计数器调整为只运行5次。哪里我已放置了值(5)这仅仅是一个初始分配?无意冒犯,但向我介绍类和迭代的定义并不能帮助我理解它们在类中的实现,正如我前面所说的。我的大部分困惑在于如何调用/引用它们。它们根本不是说明这一点的文档。大多数java文档也是如此用我有限的知识理解抽象。上面提供的java教程静态声明单个对象(一次声明1个).鉴于上面的程序正在尝试动态创建对象。我真的认为这应该是java教程文档的一部分…我以为你可能正在尝试实际学习java。我的错误。我不是想忘恩负义,我感谢你的输入。但是,java教程和所述定义没有回答我的基本问题奥斯。
   for(Phonebook myphonebook : directory)