基本上,我有一个函数,它接收一个二维数组,添加一个额外的行,然后计算列的总和,并将每个单独列的结果存储在之前创建的额外行中。这是我的代码:
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
之所以得到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