Je travaille sur Java via le site web Codefights. C'est l'exercice:Erreur de tableaux Java (pas hors limites)
Après être devenus célèbres, CodeBots a décidé de déménager dans un nouveau bâtiment et de vivre ensemble. Le bâtiment est représenté par une matrice rectangulaire de chambres, chaque cellule contenant un nombre entier - le prix de la pièce. Certains chambres sont gratuits (leur coût est de 0), mais c'est probablement parce qu'ils sont hantés, donc tous les robots ont peur d'eux. C'est pourquoi toute pièce est libre ou se trouve n'importe où sous une pièce libre dans la même colonne est pas considéré comme approprié pour les robots. Aide les robots à calculer le prix total de toutes les chambres qui leur conviennent. Exemple: Pour
matrix = [[0, 1, 1, 2], [0, 5, 0, 0], [2, 0, 3, 3]]
la sortie doit être
matrixElementsSum(matrix) = 9
. Voici les chambres matrice avec des chambres ne conviennent pas marqués 'x':[[x, 1, 1, 2], [x, 5, x, x], [x, x, x, x]]
Ainsi, la réponse est 1 + 5 + 1 + 2 = 9.
Je comprends que je dois aller à travers tous les éléments du tableau, ce qui est facile. La partie sur laquelle je suis accroché vérifie les "0" pièces au-dessus de l'élément courant dans le tableau. Je sais que cette position sera la matrice [i-1] [j], où la position actuelle dans le tableau est la matrice [i] [j]. Mais, j'obtiens une erreur "InvocationTargetExeption" quand j'essaye d'implémenter ceci. Mon hypothèse est que je demande des nombres négatifs dans l'adresse du tableau, mais je ne suis pas sûr de savoir comment résoudre ce problème. Voici mon code:
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;
}
Il pourrait encore être un AIOOBE. Vous devez vérifier le reste de la pile (et le publier ici). –
Vous avez je commence à 0, et vous utilisez i-1 dans votre déclaration if, donc quand i = 0, vous appelez matrix [-1] – Tyler
Avec i == 0 vous essayez d'accéder 'matrice [-1]' dans l'instruction if menant à l'exception. Comment invoquez-vous ce code? Il semble qu'il y ait un cadre autour de cela. L'exception devrait continuer avec "Caused by" et tôt ou tard, il devrait y avoir une ArrayIndexOutOfBoundsException ou quelque chose de similaire – Lothar