You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python风格往数组中插入数组的Java实现异常原因及修复方法

问题根因

Java中的数组属于引用数据类型,你仅在循环外初始化了一次miniArray,后续所有操作修改的都是同一个数组对象的内容。执行array2D[countIndex] = miniArray时,实际是把同一个数组的内存地址存入二维数组的不同位置,因此所有行最终都会指向最后一次修改后的数组内容。
你参考的Python代码不会出现这个问题,是因为代码里每次执行miniArray = []都会创建一个全新的列表对象,存入二维数组的是不同对象的引用,不存在内容联动的问题。

修复方案

完全贴合你想要的类Python风格逻辑,仅需在每次把miniArray存入二维数组后,创建一个新的数组对象替换原来的miniArray即可:

int[] headArray = {16, 3, 2, 13,
               5, 10, 11, 8,
               9, 6, 7, 12,
               4, 15, 14, 1};
int[] miniArray = new int[4];
int[][] array2D = new int[4][4];

int count = 0;
int countIndex = 0;

for (int i = 0; i < headArray.length; i++) {
    miniArray[count] = headArray[i];
    count++;
    if (count == 4) {
        array2D[countIndex] = miniArray;
        count = 0;
        countIndex++;
        // 创建全新的mini数组,后续操作不再影响已经存入二维数组的内容
        miniArray = new int[4];
    }
}

如果你不想频繁创建新数组,也可以使用数组拷贝的方式存入内容,效果一致:

// 需导入java.util.Arrays包
array2D[countIndex] = Arrays.copyOf(miniArray, miniArray.length);

内容的提问来源于stack exchange,提问作者Marcel Suleiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:57:03