我正在通過Codefights網站致力於Java。這是練習: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」個房間。我知道那個位置將是矩陣[i-1] [j],其中陣列中的當前位置是矩陣[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。您需要檢查堆棧跟蹤的其餘部分(並在此處發佈)。 –
你有我從0開始,你在if語句中使用i-1,所以當我= 0時,你正在調用矩陣[-1] – Tyler
隨着i == 0你嘗試訪問矩陣[-1]在if語句中導致異常。你如何調用這段代碼?看起來這裏有一些框架。這個異常應該繼續「引起」,並且早於應該有一個ArrayIndexOutOfBoundsException或類似的東西 – Lothar