我试图输入一个2D数组并返回一个表示数组数组的j列的数组。我得到一个数组超出范围的异常,我定义了int col变量。
当我在多个deminasional数组上运行时: {{1,3,8},{4,9,2},{6,11,14},{24,6,1}} 它返回[1,1,1,1]
public static int[] getColumn(int[][] grid, int j) {
int[] result = { 0 };
int row = grid.length;
int col = grid[row -1].length;
for (int i = 0; i < col; i++) {
for (int p = 0; p < row; p++) {
if (j == i) {
int[] colJ = new int[row];
for (int k = 0; k < row; k++) {
colJ[k] = grid[p][j];
}
result = colJ;
}
}
}
return result;
}
答案 0 :(得分:0)
在Java数组中,索引从&#34; 0&#34;开始。所以,你必须改变周期:
for (int i = 1; i <= col; i++) {
到for (int i = 0; i < col; i++) {
以及嵌套周期。
例如,如果你有3X3矩阵,左上角元素将有索引[0] [0]和右下角元素[2] [2],但是在你的实现中你会得到[3] [3]:{ {1}}。
这是我的实施:
grid[p][j]
输出:网格public static int[] getColumn(final int[][] grid, final int j) {
final int index = j - 1; // if we search for 1st element his index is 0, 2nd -> 1, etc.
final int[] result = new int[grid.length];
for (int i = 0; i < grid.length; i++) {
result[i] = grid[i][index]; // take from each sub-array the index we're interesting in
}
return result;
}
的{{1}}和j = 2
答案 1 :(得分:0)
更改
int col = grid[row].length;
到
int col = grid[row - 1].length;