0

私は 2 年生の大学のソフトウェア エンジニアリング プロジェクトを行っていますが、問題が発生しました。私はJava言語(および一般的なプログラミング)にかなり慣れていないため、構文をよく理解していない可能性があります。

Object 型の配列の配列を返すために使用したいメソッドがあります。これは、swing 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 を持っていたので、これを配列に変換する必要があることを理解しています。しかし、そうではありません。

役立つ回答を投稿できれば。ありがとうございました。

4

2 に答える 2

1

試すreturn data.toArray(new String[][]);

于 2013-03-21T00:32:37.730 に答える
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;
}
于 2013-03-21T00:38:04.457 に答える