2012-02-21 20 views
1

2次元配列の列をメソッド呼び出しに渡したいだけです。私は行ごとに2 d行を渡す方法を知っています。それは、aが2次元配列として定義されていることを覚えておいて、2次元配列の列をJavaのパラメータとして渡す

Check(a[i],9);です。私は、これはエラーになります

Check(a[i][],9); 

おかげ

答えて

1

このようにして、少なくともJavaではなく、2次元配列の '列'にアクセスすることはできません。行を手動で繰り返し、必要な列の値を選択する必要があります。

1

を行うときには、明示的に配列を作成せずにこれを行うことはできません...行でその行を行う方法はないかわからないしかし

と元の行列要素から要素ごとコピーします。

1

私はあなたの質問を正しく理解していますが、私はあなたに2番目のループがないと思います。

for(int i = 0; i < a.length; i++) 
{ 
    for(int j = 0; j < a[i].length; j++) 
    { 
     cellAtRowIColumnJ(a[i][j], 9) //what is the 9 for? 
    } 
} 

あなたも、これはコンパイルする場合知らないこの(わからない)が必要かもしれないが、アイデアは新しい配列に列の値をコピーして、2次元配列は行列ではありません

int[] cols = new int[a.length]; 
for(int i = 0; i < a.length; i++) 
{ 
    cols[i] = a[i][9]; 
} 
callWithColumns(cols); 
1

ことを渡すことです。配列の配列のように動作します。

int a[][]; 
for (int b[] : a) 
    for (int c : b) 
     System.out.print(c); 

あなたが探しているように見えるのは、内部配列のそれぞれの最初の要素からなる配列で、自動的にアクセスすることはできません。新しい配列を作成する必要があります。

int temp[] = new int[a.length]; 
for (int x = 0; x < temp.length; x++) 
    temp[x] = a[x][0]; 
1

私はあなたがそうしてから、それを渡すようにその配列を作成する必要があると思います:

int column = 0; // column you want to get 
int[] col = new int[a.length]; 
for(int i = 0; i < a.length; i++) { 
    col[i] = a[i][column]; 
} 

// col is now what you want to pass. 
Check(col, 9);