Передать столбцы двумерного массива в качестве параметра в Java - PullRequest
1 голос
/ 22 февраля 2012

Я хочу передать только столбцы массива 2 d в вызове метода.Я знаю, как передавать 2 d строку за строкой, и это

Check(a[i],9);, учитывая, что a определяется как массив 2 d.

Однако я не знаю, как это сделать.эта строка за строкой ... не при этом выдает ошибку

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

Спасибо

Ответы [ 5 ]

1 голос
/ 22 февраля 2012

Я думаю, вам нужно создать этот массив примерно так, а затем передать его:

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);
1 голос
/ 22 февраля 2012

2d массив не является матрицей.Он ведет себя больше как массив массивов.

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 голос
/ 22 февраля 2012

Вы не можете получить доступ к «столбцу» в 2d массиве таким образом, по крайней мере, в Java. Вам нужно будет вручную выполнить итерацию строк и выбрать нужное значение столбца.

1 голос
/ 22 февраля 2012

Не уверен, что правильно понял ваш вопрос, но я думаю, что вам не хватает второго цикла.

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?
   } 
}

Вы также можете захотеть этого (не уверен), если это не скомпилировано, идея состоит в том, чтобы скопировать значения столбца в новый массив и передать это

int[] cols = new int[a.length];
for( int i = 0; i < a.length; i++ )
{
   cols[i] = a[i][9];
}
callWithColumns(cols);
1 голос
/ 22 февраля 2012

Вы не можете сделать это без явного создания массива и копирования из исходного элемента матрицы по элементам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...