开发者社区> 问答> 正文

如何复制2D数组并添加新行以在Java中存储列的总和?

基本上,我有一个函数,它接收一个二维数组,添加一个额外的行,然后计算列的总和,并将每个单独列的结果存储在之前创建的额外行中。这是我的代码:

public static int[][] sum(int[][] array) {
    int tempArray[][] = new int[array.length + 1][array[0].length];

    for (int column = 0; column < tempArray[0].length; column++) {
        int total = 0;
        for (int row = 0; row < tempArray.length; row++) {
            total += tempArray[row][column];
        }

        tempArray[tempArray.length][column] = total;

    }

    return tempArray;
}

因此,当我运行for循环以打印结果时,由于引用该函数的某种原因而出现ArrayIndexOutOfBounds错误。我认为我的逻辑是正确的,但我似乎无法使其正常工作。对于更多上下文,用户可以输入数组的值。谢谢任何人回答!

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 16:24:38 384 0
1 条回答
写回答
取消 提交回答
  • 之所以得到ArrayIndexOutOfBounds,是因为您对索引的访问比下一行中数组的界限更多:

    tempArray[tempArray.length][column] = total;
    

    用下面的代码替换它可以解决您的问题:

    tempArray[tempArray.length - 1][column] = total;
    

    但是,您的代码仍然无法正常工作,因为求和逻辑存在错误。您正在通过以下行计算总数。

    total += tempArray[row][column];
    

    但是您的tempArray除了零外没有其他值。为了解决这个问题,请确保通过数组的值来初始化tempArray,如下所示:

    int tempArray[][] = new int[array.length + 1][array[0].length];
    
    for(int i = 0; i < array.length; i++) {
        for(int j = 0; j < array[0].length; j++) {
            tempArray[i][j] = array[i][j];
        }
    }
    

    希望这可以解决您的问题。编码愉快!

    回答来源:Stack Overflow

    2020-03-27 16:25:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载