Java 如何向ArrayList中已存在的对象添加信息?

Java 如何向ArrayList中已存在的对象添加信息?,java,arraylist,Java,Arraylist,我需要帮助 我有一个完整的ArrayList,上面有客户/客户的名字。我想做的是写一个代码,让它问我客户的名字,然后我输入它,如果它发现它添加一个电话号码到客户端。一旦它被添加,如果我想打印出列表,电话号码将位于特定客户的旁边 我有三节课。1是带有变量的客户机类—名称、地址、编号和作业管理器—整个测试程序都有添加客户机和删除客户机等方法 这就是我添加客户端的方式: public static void addClient() { System.out.println("Adding

我需要帮助

我有一个完整的ArrayList,上面有客户/客户的名字。我想做的是写一个代码,让它问我客户的名字,然后我输入它,如果它发现它添加一个电话号码到客户端。一旦它被添加,如果我想打印出列表,电话号码将位于特定客户的旁边

我有三节课。1是带有变量的客户机类—名称、地址、编号和作业管理器—整个测试程序都有添加客户机和删除客户机等方法

这就是我添加客户端的方式:

  public static void addClient() {

    System.out.println("Adding a client: \n");

    System.out.print("What is the name of the new client?: ");
    String name = keyboard.nextLine();

    System.out.println();

    if (name.length() == 0) {
        boolean invalid = true;

        while (invalid) {
            System.out.println("You cannot enter a blank name for the client. ");
            System.out.print("Please enter a valid name: "); 
            name = keyboard.nextLine();

            if (name.length() > 0) {
                invalid = false; 
            }
        }
    }

    System.out.print("What is the client's address?: ");
    String address = keyboard.nextLine();

    boolean isDuplicate = false;

    for (int i = 0; i < clientList.size(); i++) {
        String listName = clientList.get(i).getName();
        String listAddress = clientList.get(i).getAddress();

    if (listName.equalsIgnoreCase(name)
                && listAddress.equalsIgnoreCase(address)) {
            isDuplicate = true;

        if (listName.equalsIgnoreCase(name)) {
            isDuplicate = true;

        }
    }

    if (isDuplicate) {

        System.out.println();
        System.out.println("Error, that client already exists! \n");
        isDuplicate = false;

    } else {

        Client client = new Client(name, address);
        clientList.add(client);
        System.out.println();
        System.out.println("Client has been added. \n");

      }
    }
 }
public class Client {

    private ArrayList<JobManager> jobManager;
    private ArrayList<TelephoneNumber> telephoneNumbers = new ArrayList<>();

    private String name;
    private String address;
    private static int number;

    public Client(String name,String address) {

        this.name = name;
        this.address = address;     
    }

    // public void createNumber() {
    //  TelephoneNumber teleNumber = new TelephoneNumber(number);
    //  telephoneNumbers.add(teleNumber);

    //}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public static int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String toString() {
        String result;

        result = name + "\n" + address;

        result = (this.getName() + "\t" + this.getAddress());

        return result;
    }
}
这就是我的客户机类的外观:

  public static void addClient() {

    System.out.println("Adding a client: \n");

    System.out.print("What is the name of the new client?: ");
    String name = keyboard.nextLine();

    System.out.println();

    if (name.length() == 0) {
        boolean invalid = true;

        while (invalid) {
            System.out.println("You cannot enter a blank name for the client. ");
            System.out.print("Please enter a valid name: "); 
            name = keyboard.nextLine();

            if (name.length() > 0) {
                invalid = false; 
            }
        }
    }

    System.out.print("What is the client's address?: ");
    String address = keyboard.nextLine();

    boolean isDuplicate = false;

    for (int i = 0; i < clientList.size(); i++) {
        String listName = clientList.get(i).getName();
        String listAddress = clientList.get(i).getAddress();

    if (listName.equalsIgnoreCase(name)
                && listAddress.equalsIgnoreCase(address)) {
            isDuplicate = true;

        if (listName.equalsIgnoreCase(name)) {
            isDuplicate = true;

        }
    }

    if (isDuplicate) {

        System.out.println();
        System.out.println("Error, that client already exists! \n");
        isDuplicate = false;

    } else {

        Client client = new Client(name, address);
        clientList.add(client);
        System.out.println();
        System.out.println("Client has been added. \n");

      }
    }
 }
public class Client {

    private ArrayList<JobManager> jobManager;
    private ArrayList<TelephoneNumber> telephoneNumbers = new ArrayList<>();

    private String name;
    private String address;
    private static int number;

    public Client(String name,String address) {

        this.name = name;
        this.address = address;     
    }

    // public void createNumber() {
    //  TelephoneNumber teleNumber = new TelephoneNumber(number);
    //  telephoneNumbers.add(teleNumber);

    //}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public static int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String toString() {
        String result;

        result = name + "\n" + address;

        result = (this.getName() + "\t" + this.getAddress());

        return result;
    }
}

提前感谢各位的回答

你可以在这里做:

if (listName.equalsIgnoreCase(name)
            && listAddress.equalsIgnoreCase(address)) {
        isDuplicate = true;
        do {
            TelephoneNumber phoneNumber = ..;//ask user for phone number and keep repeating until user enters 0 as one user can have multiple numbers

            clientList.get(i).addNumber(phoneNumber);
        } while (!phoneNumber.getNumber().equals("0"))


    //if (listName.equalsIgnoreCase(name)) { //removed duplicate conditions
      //  isDuplicate = true;

    //}
}
在客户端类中,将addNumber添加到addnumberi n列表中,如下所示:

public void addNumber(TelephoneNumber phoneNumber) {
    telephoneNumbers.add(phoneNumber);
}

如果要首先将电话号码添加到特定客户端,则必须在数据库中搜索该客户端:

public Client searchByName(String name){// find one client and return client;}
然后设置数字:

public void addNumber(int number){ Client client=searchByName(); client.setNumber(number);}
这会将该号码添加到具有给定名称的所有客户端。若要将其仅添加到一个,请将.forEach更改为.findFirst.ifPresent

然后向客户端添加一个方法


我已经从您的示例中开发了一个小的代码示例,其中我在这里硬输入代码编码电话号码,在主要方法中,我硬编码2作为我在测试场景中输入的用户输入作为V3

客户端类

测试类


您可以使用相同的添加电话号码方法。

您有什么问题?我只是不知道如何将电话号码添加到列表中的特定客户端。您在客户端中有一个电话号码列表,但没有添加的方法。您不认为添加一种方法将电话号码添加到客户端实例中会有所帮助吗?您希望在何处添加电话号码,何时添加新客户端,或者当它们已存在于列表中时?它们已存在于何处@robin.Um什么?这与合法的Java语法不太接近。什么?它们是一个类中的2个方法;有什么问题吗?可能是搜索方法的问题;我没有写完整;必须向数据库发送查询并找到1个客户端;然后设置它的编号,这非常有用。仍在编写代码。一旦它工作,就会将其标记为解决方案!它确实清楚了一些事情,但我正在使用用户输入方式添加电话号码。@Cryphiss你能展示你为用户输入电话号码所做的代码吗?这是我目前为止所做的:它编译了,但没有添加任何内容。使用用户输入电话号码的方法添加了代码。给我几分钟时间来处理你所做的事情,看看它是如何工作的。如果有效,将标记您为解决方案!
public class Client {

private  String name;
private List<String> telephoneNumber;

Client(String name)
{
    this.name = name;
}

public List<String> getTelephoneNumber() {
    return telephoneNumber;
}

public void setTelephoneNumber(List<String> telephoneNumber) {
    this.telephoneNumber = telephoneNumber;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public boolean equals(Object obj)
{
    Client c = (Client)obj;
    return this.name.equals(c.name);
}
public class HelloWorld{
Scanner keyboard = new Scanner(System.in);



public static void main(String[] args) throws Exception {

    List<Client> clientList = new ArrayList<Client>();
    Client c1 = new Client("V1");
    Client c2 = new Client("V2");
    Client c3 = new Client("V3");
    Client c4 = new Client("V4");

    clientList.add(c1);
    clientList.add(c2);
    clientList.add(c3);
    clientList.add(c4);

    HelloWorld h = new HelloWorld();
    h.addTelephone(clientList);

    Client cTest = clientList.get(2);
    System.out.println(cTest.getTelephoneNumber());





}
public void addTelephone(List<Client> clientList)
{
    System.out.print("What is the name of the new client?: ");
    String name = keyboard.nextLine();
    Client c = new Client(name);
    if(clientList.contains(c))
    {//Client Already Exist
        int i =  clientList.indexOf(c);
        Client c1 = clientList.get(i);
        List<String> telNumber = new ArrayList<String>();
        getTelephoneNumbers(telNumber);
        c1.setTelephoneNumber(telNumber);
    }

}
}
public  void getTelephoneNumbers(List<String> telephone)
{
    boolean isExit = false;

    while(!isExit)
    {
        System.out.println("Enter Telephone Number  or 0 for exiting : ");
        String telp = keyboard.nextLine();
        if("0".equalsIgnoreCase(telp)) {
            System.out.println("Exiting");
            isExit = true;
        }
        else {
            telephone.add(telp);
        }
    }
}