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

Java使用循环拷贝2D数组并剔除-1无效值的实现问题

Java二维成绩数组拷贝正确实现

问题原因定位

你遇到的大量0.0默认值问题,90%以上是两个原因导致:

  • 遍历过程中遇到-1值直接跳过,没有维护新数组的列下标映射,导致有效成绩放错位置
  • 循环边界错误,误把第三列占位符纳入了遍历范围

正确实现代码

场景1:列位置一一对应(仅过滤-1)

要求scores数组第i行第0列(第一次考试)的有效成绩对应newScores第i行第0列,第1列对应第1列,-1位置保留默认值或自定义缺省值:

// 初始化4行2列的新数组
double[][] newScores = new double[4][2];
// 外层遍历所有学生(行)
for (int i = 0; i < scores.length; i++) {
    // 内层仅遍历前2列有效考试列,跳过第三列占位符
    for (int j = 0; j < 2; j++) {
        double score = scores[i][j];
        // 仅拷贝非-1的有效成绩
        if (score != -1) {
            newScores[i][j] = score;
        }
        // 如果需要-1的位置也保留标记而非0.0,可在这里加else newScores[i][j] = 自定义缺省值;
    }
}

场景2:有效成绩紧凑排列(无空位)

要求把每个学生的所有有效成绩从左到右依次放在newScores中,避免-1占位置导致的空位0:

double[][] newScores = new double[4][2];
for (int i = 0; i < scores.length; i++) {
    // 单独维护新数组的列索引,每存入一个有效成绩就后移一位
    int newCol = 0;
    for (int j = 0; j < 2; j++) {
        double score = scores[i][j];
        if (score != -1) {
            newScores[i][newCol] = score;
            newCol++;
        }
    }
}

内容的提问来源于stack exchange,提问作者Jean Baptiste Asong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:15:04