2017-09-08 1 views
-1

J'essaie de copier la partie droite des données d'image. L'image ci-dessous pourrait être utile. Les données sont sous forme de tableau unique.Copie d'éléments spécifiques d'un tableau dans un autre tableau

Picture

Je veux obtenir la colonne de droite unique tableau de trame de données. Je reçois "Exception dans le fil" principal "java.lang.ArrayIndexOutOfBoundsException: 1000". Je ne suis pas sûr de ce qui ne va pas.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1000

public static void main(String args[]) { 
    int height=10; 
    int width = 100; 
    int data[]= new int [height*width]; 
    int multipiler=0; 
    int counter =1; 
    int hwAssistWidth=5; 
    int hwData[] = new int[hwAssistWidth*height]; 
    int countTheFrame = 0; 
    int countTheFrame1 = 0; 
    int sourceArray; 

    for(int i=0; i<hwAssistWidth*height; i++){ 
      sourceArray = ((width-hwAssistWidth)+width*multipiler)+counter++; 
      hwData[i] = data[sourceArray]; 


      if (counter==hwAssistWidth+1){ 
       counter =1; 
       multipiler++; 
       if(multipiler==height){ 
        break; 

       } 

      } 
    } 

} 
+0

Avez-vous débogué votre programme? – f1sh

+0

Oui, je l'ai fait. Veuillez ignorer les valeurs dans le tableau de données. – ZeSamPam

+0

Parce que votre index est hors de données de tableau. –

Répondre

0

La ligne

sourceArray = ((width-hwAssistWidth)+width*multipiler)+counter++; 

définit la valeur de sourceArray à 1000 sur la dernière itération de la pour la boucle. Vous essayez d'accéder à l'élément 1000 du tableau de données

hwData[i] = data[sourceArray]; 

Cependant, le tableau de données a seulement 1000 éléments

int height=10; 
int width = 100; 
int data[]= new int [height*width]; 

Ainsi, le plus grand indice est seulement 999, ce qui est la raison pour laquelle vous obtenez l'exception de ArrayIndexOutOfBounds. Corrigez votre boucle afin que la valeur de sourceArray ne soit jamais supérieure à 999.

+0

Merci @JoshuaNewHouse. cela a fonctionné – ZeSamPam

+0

Aucun problème. Si cela répond à votre question, vous devez la marquer comme ayant été répondue. –