Java.lang.ArrayIndexOutOfBoundsException
nournawar
Messages postés
3
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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.