我正在做我的第二年大学软件工程项目并遇到了问题。我对Java语言(以及一般的编程)相当陌生,所以我有可能不能很好地理解语法。
我有一个方法,我想用它来返回Object类型的数组数组。这将用于摆动JTable。因此,数组的每个元素(数组本身)都是表中的行,“内部”数组的元素是该行中每列的值。
我不知道编码时会有多少列,因此我创建了一个方法来生成依赖于其他对象的数组数组。
这是我的代码:
public Object[][] getData(ArrayList<IModule> modules) {
ArrayList<String[]> data = new ArrayList();
for (Iterator<IModule> m = modules.iterator() ; m.hasNext(); ) {
IModule module = m.next();
for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ; ) {
ICoursework coursework = c.next();
String[] row = new String[6];
row[0] = module.getModuleTitle();
row[1] = module.getModuleCode();
row[2] = coursework.getTitle();
row[3] = coursework.dateToString();
row[4] = coursework.getLecturer().getFirstName()
+ coursework.getLecturer().getSecondName();
row[5] = getSubmissionDetails(coursework, row);
data.add(row);
}
}
data.trimToSize();
return data.toArray();
}
这显然不能编译,因为ArrayList.toArray()方法返回一个Object [],我需要它返回一个Object [] []。
据我所知,因为我有一个数组的ArrayList,所以应该转换为一个包含数组的数组。但事实并非如此。
如果你能发布一个有用的答案。谢谢。
答案 0 :(得分:1)
尝试return data.toArray(new String[][]);
答案 1 :(得分:0)
你做不到这一点。尝试:
public Object[][] getData(ArrayList<IModule> modules) {
ArrayList<String[]> data = new ArrayList<String[]>();
for (Iterator<IModule> m = modules.iterator() ; m.hasNext(); ) {
IModule module = m.next();
for (Iterator<ICoursework> c = module.getCoursework().iterator() ; c.hasNext() ; ) {
ICoursework coursework = c.next();
String[] row = new String[6];
row[0] = module.getModuleTitle();
row[1] = module.getModuleCode();
row[2] = coursework.getTitle();
row[3] = coursework.dateToString();
row[4] = coursework.getLecturer().getFirstName()
+ coursework.getLecturer().getSecondName();
row[5] = getSubmissionDetails(coursework, row);
data.add(row);
}
}
Object[][] arr = new Object[data.size()][6];
for (int i = 0; i < data.size(); i++) {
String[] strings = data.get(i);
for (int j = 0; j < strings.length; j++) {
arr[i][j] = strings[j];
}
}
return arr;
}