2

しばらく前に、以下のように定義される可変長引数リスト (Java) を使用するメソッドをいじっていました。

public static int[] makeArray (int... a) {
return a;
}

これはばかげたプログラムですが、未定義の量の整数を取り込んで配列を作成するので、以下のすべてが同じメソッドで呼び出されます

makeArray(1);
makeArray(1,2);
makeArray(1,2,3);

今私がやろうとしているのは、同じ効果を持つが整数の代わりに配列を使用するメソッドを作成することです。配列を2次元配列に入れることでこれができるのではないかと考えていましたが、追加される配列のサイズが異なる可能性があるため、これが可能かどうかは100%わかりません。(多分、この理由でさえそれは不可能ですか?)。しかし、私が知る限り、配列の配列を作成する唯一の方法は 2 次元配列です。

私は試しました(これは私がこれを実際に使用するものではないことに注意してください。これを実験してこれを行う方法を確認しただけです)

public static int countArrays(int[]... a) {
return a.length;
}

これはコンパイルされませんでした。

誰でも提案できますか?

興味のある方へ。私がやりたいのは、X個の配列を取り、その実行に基づいて、すべての配列を追加するようにforループを実行するメソッドを作成することです

int[] sum = new int[a[0].length];
for (int i=0; i<a.length; i++){
for (int j=0; j<a[0].length; j++){
n[i] += a[i][j];
}}
4

2 に答える 2

2

コンパイルしないと言う理由がわかりません-次の例は私にとってはうまくいきます(コンパイルして2を出力します):

public static void main(String[] args) throws Exception {
    int[] i1 = new int[]{1,2,3};
    int[] i2 = new int[]{1,2,3};
    int count = countArrays(i1, i2);
    System.out.println(count);
}

public static int countArrays(int[]... a) {
    return a.length;
}
于 2012-04-04T10:21:53.150 に答える
0

配列のサイズが異なる可能性があるという点について。次を使用できます。

int[][] b = new int[10][];
int[] c = new int[2];
int[] d = new int[2131231];
b[0] = c;
b[1] = d;

配列の内側の配列の長さを事前に定義しないでください。これですべての作業が実行されます。

于 2012-04-04T10:29:55.470 に答える