0

这行代码向我抛出异常:线程“main”java.lang.IndexOutOfBoundsException中的异常:索引:5,大小:5

String [][] employeeNamesA = new String [2][index];
for (int i = 0; i<index; i++)employeeNamesA[0][i] = employeeNames.get(i);

我正在尝试将 ArrayList 转换为多维数组。

4

2 回答 2

3

您的employeeNames列表没有index元素数量。它很可能有 5,这意味着它会IndexOutOfBoundsException在执行employeeNames.get(i)i = 5 时抛出。

于 2013-05-02T23:22:51.360 回答
0

正如 jlordo 所建议的,您应该只创建一个 Employee 类。

这是一个例子:

class Employee {

    String name;
    String info;

    public Employee(String n, String i) {
        name = n;
        info = i;
    }

    public String getName() {
        return name;
    }

    public void setName(String s) {
        name = s;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String s) {
        info = s;
    }
}


List<String> nameList = // populate nameList
List<String> infoList = // populate infoList

List<Employee> employeeList = new ArrayList<Employee>();

for (int i = 0; i < nameList.size(); i++) {
    String name = nameList.get(i);
    String info = null;
    if (infoList.size() > i) {
        info = infoList.get(i);
    }
    Employee emp = new Employee(name, info);
    employeeList.add(emp);
}

现在您有了一个 Employee 对象列表,而不是一个愚蠢的多维数组。

请注意,我们检查infoList循环中的大小以避免IndexOutOfBoundsException

于 2013-05-02T23:50:36.440 回答