gpt4 book ai didi

java - 我无法在java中访问我的对象的arraylist属性

转载 作者:行者123 更新时间:2023-12-02 00:35:29 25 4
gpt4 key购买 nike

所以我有三个类:Employee、Event 和 Main。我的程序的目的是创建一个事件管理系统,用户在其中输入事件名称以及参加该事件的员工的姓名和 ID。我有一个员工对象和一个事件对象。我的员工对象的属性是 String name 和 int ID。我的事件对象的属性是名称和参加该事件的 Employee 对象的 ArrayList。现在的问题是,在我的主要方法中,当我要求用户输入 Activity 名称、 Activity 中的员 worker 数,然后继续询问参加 Activity 的员工的姓名和 ID 时,问题是获得用户的信息后,当我尝试显示正在参加 Activity 的员工(例如他们的名字)时,它只返回一个空数组列表。

我遇到的问题来自代码末尾的行,其中打印出我用星号标识的特定 Activity 的与会者。

这是主类的一些代码:

public class Main {

public static void main (String[] args) {

ArrayList<Event> events = new ArrayList<Event>();
ArrayList<Employee> employees = new ArrayList<Employee>();

Event event = null;
Employee employee = null;

Scanner key = new Scanner (System.in);
String name, employeeName, id = "";
int numOfEmployees, attendees = 0;

System.out.print("How many events? ");
numOfEmployees = key.nextInt(); key.nextLine();
for (int i = 0; i < numOfEmployees; i++) {
System.out.println("===========================================");
System.out.print("Enter the name of the event: ");
name = key.nextLine();

System.out.print("How many attendees? ");
attendees = key.nextInt(); key.nextLine();

for (int k = 0; k < attendees; k++) {
System.out.println("----------------------------------------");
System.out.print("Enter the employee name: ");
employeeName = key.nextLine();

System.out.print("Enter the employee IDs of the attendees: "); id = key.nextLine();

int temp = Integer.parseInt(id);
employee = new Employee(employeeName, temp);

System.out.println(employee);
employees.add(employee);

}

System.out.println(employees);
event = new Event(name, employees);

events.add(event);
//event = null;
employees.clear();
}

System.out.println(events.get(1).getName());
**System.out.println(events.get(1).getAttendees());**

key.close();
}
}

如果您想要我的事件类和员工类中的代码,我也可以给您,但这里只是两者的构造函数:

事件类的构造函数:

public Event (String name, ArrayList<Employee> employees) {
this.name = name;
this.events.add(name);
this.attendees = employees;
}

员工类的构造函数:

public Employee(String name, int ID) {
this.name = name;
this.ID = ID;
this.employees.add(ID);
}

最佳答案

尝试阅读此内容:Is Java "pass-by-reference" or "pass-by-value"?

创建一个新的ArrayList并将其分配给e可以解决问题。

更换

e.clear();   

 e = new ArrayList<Employee>();

应该可以解决。 (或者您也可以在事件构造函数中使用克隆。)

所有事件都指向同一个ArrayList,所以

e.clear()

清除所有 Activity 的与会者。

关于java - 我无法在java中访问我的对象的arraylist属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57981410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com