如何在 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 的角度来看,您的代码存在多个问题。但是直接回答你的问题你必须做两件事:
- 在 ContactList class 中,您缺少 class 私有字段的所有 SETTERs(这对现在是默认的,你应该将它们设为私有)。如果您想更改与这些字段相关的任何值,这些可以帮助您。这将允许您为每个 class 属性设置一个值,这将我们带到下一件事。
- 在 Main class 行中:
String data = (lName + lName + address + phoneNumber + email);
您应该通过它的构造函数创建一个新的 ClientList 对象,并使用您刚刚从用户那里读取的值填充它的属性:
contactLists.add(new ContactList(fName, lName, address, phoneNumber, email));
抱歉,如果我没有正确解释这一点,但我该如何添加新的联系信息。
我正在处理一个个人项目并尝试将数据添加到数组列表中。我为用户创建了用于输入信息的输入,但我该如何将信息添加到数组列表中?
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 的角度来看,您的代码存在多个问题。但是直接回答你的问题你必须做两件事:
- 在 ContactList class 中,您缺少 class 私有字段的所有 SETTERs(这对现在是默认的,你应该将它们设为私有)。如果您想更改与这些字段相关的任何值,这些可以帮助您。这将允许您为每个 class 属性设置一个值,这将我们带到下一件事。
- 在 Main class 行中:
String data = (lName + lName + address + phoneNumber + email);
您应该通过它的构造函数创建一个新的 ClientList 对象,并使用您刚刚从用户那里读取的值填充它的属性:
contactLists.add(new ContactList(fName, lName, address, phoneNumber, email));