将2 D数组的列作为Java中的参数传递

时间:2012-02-21 22:09:01

标签: java arrays row

我想只在方法调用中传递2 d数组的列。我知道如何逐行传递2 d,那就是

Check(a[i],9);请注意,a被定义为2 d数组。

但是我不知道怎么一行一行地做...而不是这样做会给出错误

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

由于

5 个答案:

答案 0 :(得分:1)

如果没有显式创建数组并从元素中复制原始矩阵,则无法执行此操作。

答案 1 :(得分:1)

您无法以这种方式访问​​二维数组中的“列”,至少不能使用Java。您需要手动迭代行并选择所需的列值。

答案 2 :(得分:1)

我不确定我是否正确理解了您的问题,但我认为您错过了第二次循环。

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

你可能也想要这个(不确定)dunno如果这个编译,想法是将列值复制到一个新数组并传递

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

答案 3 :(得分:1)

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];

答案 4 :(得分: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);