【发布时间】:2017-09-05 16:34:37
【问题描述】:
我正在通过 Codefights 网站研究 Java。这是练习:
成名后,CodeBots 决定搬到新大楼住在一起。建筑物由一个矩形矩阵表示 房间,每个单元格包含一个整数 - 房间的价格。一些 房间是免费的(他们的费用是 0),但这可能是因为他们是 闹鬼,所以所有的机器人都害怕它们。这就是为什么任何房间 是免费的或位于同一列中空闲房间下方的任何位置 不适合机器人。帮助机器人计算 适合他们的所有房间的总价。例子: 对于
matrix = [[0, 1, 1, 2], [0, 5, 0, 0], [2, 0, 3, 3]]输出应该是
matrixElementsSum(matrix) = 9。这是带有“x”标记的不合适房间的房间矩阵:[[x, 1, 1, 2], [x, 5, x, x], [x, x, x, x]]因此,答案是 1 + 5 + 1 + 2 = 9。
我知道我必须遍历数组的所有元素,这很容易。我挂断的部分是检查数组中当前元素上方的“0”房间。我知道那个位置是matrix[i-1][j],数组中的当前位置是matrix[i][j]。但是,当我尝试实现它时,我收到了错误“InvocationTargetExeption”。
我的假设是我在数组地址中要求负数,但我不确定如何解决这个问题。这是我的代码:
int matrixElementsSum(int[][] matrix) {
int sum = 0;
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[i].length; j++){
if(matrix[i-1][j]==0){ sum += 0;}
else{sum += matrix[i][j];}
}
}
return sum;
}
【问题讨论】:
-
它仍然可能是一个 AIOOBE。您需要检查堆栈跟踪的其余部分(并在此处发布)。
-
你让 i 从 0 开始,并且你在 if 语句中使用 i-1,所以当 i = 0 时,你正在调用 matrix[-1]
-
使用 i==0 您尝试在导致异常的 if 语句中访问
matrix[-1]。您如何调用此代码?似乎有一些围绕这个的框架。异常应该以“Caused by”继续,迟早应该有一个 ArrayIndexOutOfBoundsException 或类似的东西
标签: java arrays indexoutofboundsexception