将数组的特定元素复制到另一个数组

时间:2017-09-08 17:56:21

标签: java arrays sorting indexoutofboundsexception

我正在尝试复制帧数据的右侧部分。下面的图片可能很有用。数据采用单一数组形式。

Picture

我想获得数据帧的单数组右列。 我得到"线程中的例外"主要" java.lang.ArrayIndexOutOfBoundsException: 1000&#34 ;.我不知道出了什么问题。

  

线程中的异常" 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;

              }

          }
    }

}

1 个答案:

答案 0 :(得分:0)

该行

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

在for循环的最后一次迭代中将sourceArray的值设置为1000。然后,您尝试访问数据数组的元素1000

hwData[i] = data[sourceArray];

但是数据数组只有1000个元素

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

所以最大的索引只有999,这就是你得到ArrayIndexOutOfBounds Exception的原因。修复你的循环,使sourceArray的值永远不会大于999。