这行代码给我一个例外: 线程“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转换为多维数组。
答案 0 :(得分:3)
您的employeeNames
列表中没有index
个元素。它很可能有5个,这意味着当i = 5执行IndexOutOfBoundsException
时它会抛出employeeNames.get(i)
。
答案 1 :(得分: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
)