简体   繁体   English

ArrayList.add()不添加到ArrayList

[英]ArrayList.add() not adding to ArrayList

I am trying to add some names and phone numbers created from the constructor of the PhoneBookEntry class, store them inside of an ArrayList inside of the PhoneBook class, and then be able to print out the array list. 我正在尝试添加一些从PhoneBookEntry类的构造函数创建的名称和电话号码,将它们存储在PhoneBook类的ArrayList内部,然后能够打印出阵列列表。

public class Application {
  public static void main(String[] args) {
    PhoneBookEntry name1 = new PhoneBookEntry("Cameron", "1-425-415-7157");
    PhoneBookEntry name2 = new PhoneBookEntry("Mike", "1-748-142-2341");
    PhoneBookEntry name3 = new PhoneBookEntry("Riles", "1-471-648-1782");
    PhoneBookEntry name4 = new PhoneBookEntry("Tom", "1-427-145-6471");
    PhoneBookEntry name5 = new PhoneBookEntry("Billy", "1-718-545-5715");
  }
}


import java.util.ArrayList;

public class PhoneBookEntry {

PhoneBook book = new PhoneBook();

public PhoneBookEntry(String name, String phoneNumber) {
    book.add(name, phoneNumber);
}

public void printEntries() {
    for(int i = 0; i < names.size(); i++) {
        System.out.println("Name #"+(i + 1)+": "+names.get(i));
    }
}

}


import java.util.ArrayList;

public class PhoneBook {
   ArrayList<String> names = new ArrayList<String>();
  ArrayList<String> phoneNumbers = new ArrayList<String>();

public void add(String name, String phoneNumber) {
    names.add(name);
    System.out.println(name + " added to the arraylist!");
    System.out.println(names.size());
    phoneNumbers.add(phoneNumber);
}

public void print() {
    for (int i = 0; i < names.size(); i++) {
        System.out.println("Name #" + (i + 1) + ": " + names.get(i));
    }
    for (int i = 0; i < phoneNumbers.size(); i++) {
        System.out.println("Phone Number #" + (i + 1) + ": " + phoneNumbers.get(i));
    }
}
}

Current output: 电流输出:

Cameron added to the arraylist!
1
Mike added to the arraylist!
1
Riles added to the arraylist!
1
Tom added to the arraylist!
1
Billy added to the arraylist!
1

It's because you create a new PhoneBook for each PhoneBookEntry , ending up with five lists with one entry each. 这是因为您为每个PhoneBookEntry创建了一个新的PhoneBook ,最后得到了五个列表,每个列表只有一个条目。

Your code should probably look more like 您的代码应该看起来更像

public static void main(String[] args) {
   PhoneBook book = new PhoneBook();
   book.add("Cameron", "1-425-415-7157");
   book.add("Mike", "1-748-142-2341");
}

You are creating a new PhoneBook with every PhoneBookEntry . 您正在创建一个新的PhoneBookPhoneBookEntry

Make PhoneBook book a field: 使PhoneBook book成为一个字段:

public PhoneBook book = new PhoneBook();

and simply add each new entry into it with every new PhoneBookEntry object. 并只需将每个新条目与每个新的PhoneBookEntry对象一起添加到其中即可。 Or simply create your PhoneBook book in the main. 或者直接在主目录中创建您的PhoneBook book

为什么不创建一个电话簿,在其中创建电话簿条目的数组列表,然后仅将条目添加到电话簿中?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM