Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中保存ArrayList中的数据?_Java_Arrays_Arraylist_Collections - Fatal编程技术网

如何在Java中保存ArrayList中的数据?

如何在Java中保存ArrayList中的数据?,java,arrays,arraylist,collections,Java,Arrays,Arraylist,Collections,我在Company类中有一个made方法,并在PayrollApp类中调用它。首先!它工作正常,但每当我第二次调用该方法时,它就会抛出indexoutofboundException。我正在控制台上运行此应用程序,而不使用数据库。我想将所有employees对象添加到该arraylist中 public class Company { private ArrayList<Employee> _employeeList = new ArrayList<Employee&g

我在Company类中有一个made方法,并在PayrollApp类中调用它。首先!它工作正常,但每当我第二次调用该方法时,它就会抛出indexoutofboundException。我正在控制台上运行此应用程序,而不使用数据库。我想将所有employees对象添加到该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);
上市公司{
private ArrayList_employeeList=new ArrayList();
公共作废setAddEmployee(员工c){
_雇员名单。添加(c);
}
}
员工emp=新员工(_name,_empId);
emp.SETNUMOFhours perweek(_hoursPerWeek);
emp.setHourlySalary(_hourlySalary);
emp.setManagerName(_manager);
Company com=新公司();
com.setAddEmployee(emp);

问题在于索引
i
是公司的静态变量,而
ArrayList\u employeeList
不是

因此,变量
i
由对象的所有实例共享,而ArrayList
\u employeeList
是一个实例变量

因此,第一次使用company.setAddEmployee()时,它可以正常工作,因为arrayList和i都是空的,i都是0,所以它可以工作,i增加到1

但下次对不同的
公司
对象执行
company.setAddEmployee()
时,该对象的arrayList为空,但i为
1
,因为变量
i
是静态的,并且由
公司
类的所有实例(对象)共享


您需要将
ArrayList
也设置为静态,或者需要将
i
设置为非静态(成员变量),尽管您甚至可能不需要
i
(我们也可以执行
\u employeeList.add()
,它将在下一个可用索引中添加),但我无法评论您如何解决此问题,因为我不确定您试图用代码实现什么。

它发生在哪一行?你是否在谷歌上搜索了例外,试图了解它是什么,以及它为什么会发生?您是否使用调试器逐步检查了代码?要添加到
数组列表
,只需调用
\u employeeList.add(c)不需要索引。可能是因为索引计数器使用的是
静态int
字段。将其保留在执行处理的方法的范围内。我有_Employee的ArrayList。我希望无论何时添加新员工,都应该将其添加到arraylist中。我从代码中删除了“I”,但仍然不起作用,您仍然会收到相同的错误吗?如果是,请使用最新代码和issue@hemant最新的错误是什么?从哪一行开始?堆栈跟踪会很好。