我想只在方法调用中传递2 d数组的列。我知道如何逐行传递2 d,那就是
Check(a[i],9);
请注意,a被定义为2 d数组。
但是我不知道怎么一行一行地做...而不是这样做会给出错误
Check(a[i][],9);
由于
答案 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);