2010-12-14 74 views
0

J'ai un problème avec l'exception "java.lang.ArrayIndexOutOfBoundsException" J'ai écrit un programme qui a src array de 48 longueur puis le traite pour prendre chaque 6 index un autre tableau utilisant la méthode arrayCopy et imprime chaque tableau dst pour moi cela fonctionne bien il imprime chaque 6 index du tableau initial mais à la fin je reçois une aide d'exception s'il vous plaît. l'algorithme est juste un test parce que je veux utiliser le arrayCopy dans un autre algorithme, donc je n'ai pas besoin de suggestion pour changer l'algorithme. je l'espère, il est assez clair justeJ'ai un problème avec l'exception "java.lang.ArrayIndexOutOfBoundsException"

public static void main(String [] arg) 
     { 
      int[] src = new int[48]; 
      for(int j=0;j<src.length;j++) 
      { 
       src[j]=j+1; 
       System.out.print(src[j]+" "); 
      } 
      System.out.println(); 
      int[] dst = new int[6]; 
      int from=0; 
      for(int i=0;i<src.length;i++) 
      { 
       System.arraycopy(src, from, dst, 0, 6); // Copies 6 indexes from src starting at from into dst 
       from=from+6; 
       print(dst); 
       System.out.println(); 
      } 



      } 

     public static void print(int [] dst) 
     { 
      for(int i=0;i<dst.length;i++) 
       System.out.print(dst[i]+" "); 
     } 
+0

Pouvez-vous indiquer exactement quelle ligne l'exception est lancée? – jjnguy

Répondre

3

Essayez ceci:

for(int i=0;i<src.length;i+=6) // increment i by value 6 

Ou utiliser from dans l'expression pour:

for(int from=0; from<src.length; from+=6) { 
    System.arraycopy(src, from, dst, 0, 6); 
    print(dst); 
    System.out.println(); 
} 
+0

Oui, cela ressemble à la solution, je pense. – jjnguy

+0

merci ça marche, aimez votre réponse et (star * Infinity) – Gain

0

La façon dont vous l'avez écrit, le dernier itération de votre boucle de + 5 = 53 qui est supérieure à 47 (donc hors des limites de la source).