从2D数组返回一列数组

时间:2015-11-06 23:52:14

标签: java arrays

我试图输入一个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;
}

2 个答案:

答案 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;