2

ここに私が書いた特定の方法があります:

class A {

    private static ArrayList<ArrayList<Integer>> inputTerms = 
                                              new ArrayList<ArrayList<Integer>();

    public static void method1(ArrayList<Integer> terms) {

        int N = terms.size();
        for (int i = 0; i < N - 1; i++) {
            for (int j = i + 1; j < N; j++) {
                ArrayList<Integer> clauses = new ArrayList<Integer>();
                clauses.add(-terms.get(i));
                clauses.add(-terms.get(j));
                inputTerms.add(clauses);
            }
        }
    }
}

私の主な機能には、次のコードがあります。

for (int i=0; i<N-1; i++){ 
   ArrayList<Integer> firstdiagonalTerms = new ArrayList<Integer>(); 
   for (int j=0; j<N-i; j++){ 
      firstdiagonalTerms.add(variable[j][i+j]); 
   } 
   method1(firstdiagonalTerms);
} 

メイン関数にこのような 4 つの二重 for ループがあり、さまざまな反復で method1 を呼び出します。ただし、最初の for ループは適切な回答を提供しますが、2 番目の for ループ内で ArrayList を宣言すると、inputTerns 変数が null に設定されます。どうすればこれを克服できますか?

4

2 に答える 2

1

あなたがここで何を達成しようとしているのかわかりません。しかし、あなたは間違いなくArrayListsのArrayListを作成することができます。

public class Testapp {

static ArrayList<ArrayList<Integer>> inputTerms = new ArrayList<ArrayList<Integer>>();

public static void main(String[] args) {
    int outerlist = 3;
    int innerlist = 5;
    for(int i=0; i<outerlist; i++)
    {
        ArrayList<Integer> list = new ArrayList<Integer>(); 
        for(int j=0; j<innerlist; j++)
        {
            list.add(j);
        }
        inputTerms.add(list);
    }

    Iterator outi = inputTerms.iterator();
    while(outi.hasNext()){
        ArrayList<Integer> temp = (ArrayList<Integer>)outi.next();
        Iterator ini = temp.iterator();
        while(ini.hasNext()){
            System.out.print(ini.next());
        }
        System.out.println();
    }
}
}

出力:

01234 
01234 
01234
于 2012-09-04T18:37:19.180 に答える
1

ArrayList<Integer[]>別の ArrayList の代わりに使用することをお勧めします。ArrayList を使用しないと何かが失われる可能性がありますが、これが唯一の方法です。

于 2012-09-04T18:16:29.340 に答える