Java.lang.ArrayIndexOutOfBoundsException
nournawar
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir à tout, comment gérer ce message d'erreur.Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1at atovic.Normalize.main(Normalize.java:37)
package atovic; public class Normalize { static int m,n,p,k,j,i; static double x[][]=new double[m][n]; static double h[]=new double[k]; public static double[] eigenvector(int [][]x) { double sum=0; int k=2; for(p=1; p<=k; p++){ { for(i=1; i<=m; i++){ for(j=1; j<=n; j++){ if(j==k){ double px=Math.pow(x[i][j], 2); sum =sum+px; h[p]=Math.sqrt(sum); } else{ j++; } } } } } return h; } public static void main(String[]args){ int [][]x=new int[m][n]; int k=2; double h[]=eigenvector(x); for(p=1; p<=k; p++) { System.out.println("The normalzed matrix is of class p is" +h[p]); } } }
1 réponse
Bonjour,
m et n ne sont pas initialisés, par défaut ils valent 0, donc tous tes tableaux sont de taille [0] et [0][0] pour la matrice, et le programme plante quand tu fais h[p] avec p=1 car la case 1 n'existe pas.
Remarque : en Java les tableaux commencent à l'indice 0, pas à l'indice 1, il faut donc écrire
m et n ne sont pas initialisés, par défaut ils valent 0, donc tous tes tableaux sont de taille [0] et [0][0] pour la matrice, et le programme plante quand tu fais h[p] avec p=1 car la case 1 n'existe pas.
Remarque : en Java les tableaux commencent à l'indice 0, pas à l'indice 1, il faut donc écrire
for (int i=0; i<n; i++)car si tu fais
for (int i=1; i<=n; i++)d'une part tu "oublieras" la case 0, d'autre part tu auras une erreur à la case n.