繁体   English   中英

展平不均匀数组-超出范围异常错误

[英]Flattening uneven array - Out of bounds exception error

我试图展平此数组:

int[][] arr = { {1, 2, 3},
                {4, 5},
                {6},
                null,
                {},
                {7,8}};

我可以看到,在最初的几个步骤中,它填充了新数组,但是随后出现了超出范围的异常错误。 我不明白我的错误在哪里。

public static int[] concAr (int[][] arr) {
    int countels=0;
    for (int r = 0; r < arr.length; r++) {
        if (arr[r] == null|| arr[r].length==0)
            continue;
        for (int c = 0; c < arr[r].length; c++) {               
            countels++;
        }
    }
    int[] flatAr = new int[countels];
    for(int i = 0; i < countels; i ++) {
        if(arr[i]!=null) {
            for(int j = 0; j < arr[i].length; j ++) {
                flatAr[(i * arr.length) + j] = arr[i][j];
            }
        }
    }
    return flatAr;
}

以下索引是错误的,因为数组长度不同

flatAr[(i * arr.length) + j] = arr[i][j];

count设置为零后,请使用以下命令:

flatAr[count++] = arr[i][j];

countels是展平数组的长度,在这种情况下为8。但是,在第二个外部循环中,即使未展平的数组只有6个元素,您仍可以在原始未展平的数组中索引直到countels 一旦超过了6,就会超出范围。

第二次,您仍然需要迭代第一次的方式,并在第二组循环中增加展平数组的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM