java - 展平不均匀数组 - 越界异常错误

标签 java arrays concatenation multidimensional-array

我正在尝试展平这个数组:

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];

关于java - 展平不均匀数组 - 越界异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445396/

相关文章:

java - 数组中包含开头和结尾元音的最长字符串

自定义 STRCAT 被太多参数淹没

java - 将字符串传递给 InetSocketAddress

java - 在 Java 中比较两个集合

c - 分配连续内存

arrays - 字符串中给定数量的字符的精确匹配

Python 连接和排序 3 个数据帧

sql - 在 SQL 中连接计算字段

java - 如何在 hibernate 中使用带有位置参数的@Loader?

java - 如何将java swing ImageIcon图像保存到文件?