这是在 Android 中填充二维数组的错误方法吗?

Is this the wrong way to fill a 2D array in Android?

我正在尝试填写 boolean[][],但我不断收到:

array out of bounds error

这个循环有问题吗?

public static final int NUM_COL = 3;
public static final int NUM_ROW = 5;
public boolean[][] fillEmptyCompletedTopics(boolean[][] completedTopics){

    for(int i = 0; i < NUM_ROW; i++){
        for(int n = 0; n < NUM_COL; n++){
            completedTopics[i][n] = false;
        }
    }

    return completedTopics;
}

编辑:这是初始化的数组:

boolean[][] completedTopics = new boolean[NUM_ROW][NUM_COL];

edit2: 我发现调用这个数组的另一个错误,我猜循环是好的。谢谢。

您需要确保 boolean[][] 中有足够的 space。 显然不是这样。

如果您知道它的尺寸,请使用类似这样的东西:

public static final int NUM_COL = 3;
public static final int NUM_ROW = 5;

public boolean[][] fillEmptyCompletedTopics(){
    boolean[NUM_COL][NUM_ROW] completedTopics;
    for(int i = 0; i < NUM_ROW; i++){
        for(int n = 0; n < NUM_COL; n++){
            completedTopics[i][n] = false;
        }
    }
    return completedTopics;
}

通常我建议使用数组的长度字段来限制迭代


for(int i = 0; i < c.length; i++) {
    for(int j = 0; j < c[i].length; j++) {
        //Do stuff
    }
}
</pre>