我正在尝试复制帧数据的右侧部分。下面的图片可能很有用。数据采用单一数组形式。
我想获得数据帧的单数组右列。
我得到"线程中的例外"主要" 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;
}
}
}
}
答案 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。