我在 Company 类中有一个make方法,并在 PayrollApp 类中调用它。首先!它工作正常,但每当我第二次调用该方法时,它会抛出 indexoutofboundException 。我在控制台上运行此应用程序而不使用数据库。我想将所有员工对象添加到该arraylist中。
public class Company {
private ArrayList<Employee> _employeeList = new ArrayList<Employee>();
public void setAddEmployee(Employee c){
_employeeList.add(c);
}
}
Employee emp = new Employee(_name, _empId);
emp.setNumOfHoursPerWeek(_hoursPerWeek);
emp.setHourlySalary(_hourlySalary);
emp.setManagerName(_manager);
Company com = new Company();
com.setAddEmployee(emp);
答案 0 :(得分:2)
问题是索引i
是Company
的静态变量,而ArrayList _employeeList
则不是。{/ p>
因此变量i
由对象的所有实例共享,而ArrayList _employeeList
是实例变量。
所以第一次执行company.setAddEmployee()
时,它工作正常,因为arrayList都是空的,而且我是0,所以它可以工作,并且我增加到1。
但下次对company.setAddEmployee()
对象执行company
时,该对象的arrayList为空,但我是1
,因为变量i
是静态的并由Company
类的所有实例(Object)共享。
您需要使ArrayList
静态,或者您需要使i
非静态(成员变量),尽管您可能甚至不需要i
(我们可以也做_employeeList.add(<element>)
,它会在下一个可用的索引处添加),但我不能评论你如何解决这个问题,因为我不确定你要用代码实现什么。