如何在 class ArrayList 中添加新的用户数据

How do I add new user data inside a class ArrayList

抱歉,如果我没有正确解释这一点,但我该如何添加新的联系信息。

我正在处理一个个人项目并尝试将数据添加到数组列表中。我为用户创建了用于输入信息的输入,但我该如何将信息添加到数组列表中?

ArrayList contactLists = new ArrayList<>();

主要Class:

package com.ContactList;

import javax.swing.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    ArrayList<ContactList> contactLists = new ArrayList<>();

    public static void main(String[] args) {
        displayMen();
    }


    public static void displayMen() {

        do {

            System.out.println("Please choose from the following selection \n press 2 add a business contact \n press 2 to a personal contact \n press 3 to display your contact list");

            Scanner sc = new Scanner(System.in);
            int select = sc.nextInt();

            switch (select) {
                case 1:
                    //use this to add a business contact
                    // System.out.println("This is a test ot see the code is working");
                    addContact();
                    break;
                case 2:
                    //use this to add a personal contact

                    break;
                case 3:
                    //allow the user to display the contact information
                    break;
                case 4:
                    //this is to quit the program
            }

        } while (true);
    }

    public static void addContact() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter the user first name");
        String fNmae = sc.next();
        System.out.println("Please enter the user last name");
        String lName = sc.next();
        System.out.println("Please enter the user address");
        String address = sc.next();
        System.out.println("Please enter the user phoneNumber");
        String phoneNumber = sc.next();
        System.out.println("Please enter the user email");
        String email = sc.next();
        String data = (lName + lName + address + phoneNumber + email);





    }


}

联系人列表Class:

package com.ContactList;

public class ContactList {

    String firstName;
    String lastName;
    String address;
    String phoneNumber;
    String email;

    public void contactList(String firstName, String lastName, String address, String phoneNumber, String email){
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
        this.phoneNumber = phoneNumber;
        this.email = email;
    }


    //Getter Methods
    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public String getAddress() {
        return address;
    }

    public int getPhoneNumber() {
        return phoneNumber;
    }

    public String getEmail() {
        return email;
    }
}

业务联系人class:

package com.ContactList;

public class BusinessContact extends ContactList{

    String jobTitle;
    String organization;


    public void businessContact(String firstName, String lastName, String address, String phoneNumber, String email) {
        super.contactList(firstName, lastName, address, phoneNumber, email);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }
}

个人联系人class:

public class PersonalContact extends ContactList{

    int dateOfBirth;


    public void PersonalContact(String firstName, String lastName, String address, int phoneNumber, String email, int dateOfBirth) {
        super.contactList(firstName, lastName, address, phoneNumber, email);

        this.dateOfBirth = dateOfBirth;
    }

    public int getDateOfBirth() {
        return dateOfBirth;
    }
}

看起来您可以在 addContact() 中创建一个新的 PersonalContact/BusinessContact 对象,使用您刚刚从用户那里获得的数据进行初始化,然后将其添加到末尾ArrayList 使用 add() 方法。

对于 BusinessContact,构造函数参数列表中缺少职务和组织字段,因此您需要添加这些字段。

对于 PersonalContact,您已选择将 phoneNumber 和 dateOfBirth 字段存储为整数,因此您需要使用适当的 Scanner 方法来获取该数据并适当地转换它。

也许您还应该向 addContact 方法指明联系人是 BusinessContact 还是 PersonalContact 以便您知道最后要构建的对象类型:

contactLists.add(new BusinessContact(fName, lName, address, phoneNumber, email, jobTitle, organization);

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ArrayList.html#add(E)

从 OOP 的角度来看,您的代码存在多个问题。但是直接回答你的问题你必须做两件事:

  1. ContactList class 中,您缺少 class 私有字段的所有 SETTERs(这对现在是默认的,你应该将它们设为私有)。如果您想更改与这些字段相关的任何值,这些可以帮助您。这将允许您为每个 class 属性设置一个值,这将我们带到下一件事。
  2. Main class 行中:

String data = (lName + lName + address + phoneNumber + email);

您应该通过它的构造函数创建一个新的 ClientList 对象,并使用您刚刚从用户那里读取的值填充它的属性:

contactLists.add(new ContactList(fName, lName, address, phoneNumber, email));