我在以下代码中获得了一个数组索引超出范围的异常:
for (int i=1; i<11; i++) {
int a[][] = new int[10][3];
double LeftTrim = 1.0;
double RightTrim = 1.0;
a [i][0]=(int) (LeftTrim*((i)*25));
a [i][1]=(int) (RightTrim*((i)*25));
a [i][2]= 5000;
//leftWheel, rightWheel, Milliseconds
myf.setWheelVelocities(a[i][0], a[i][1], a[i][2]);
JOptionPane.showMessageDialog(null, + (a [i][0] + a [i][1])/2 + "wheel velocities" + " | " + a [i][2] + " Milliseconds" + " Click OK to continue...");
}
每次我达到第9个增量Eclipse都会给我错误
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10"
我必须测试速度高达250,但是当我达到225并且我点击'确定''点击确定继续......“这个错误出现了!我是否会走出数组边界或什么?
编辑:速度必须从25,50,75 ...... 250开始(总共十个)
谢谢!
答案 0 :(得分:9)
i
中a[i]
的有效值为0
到9
。您的代码会迭代到10
。
此外,循环从1
开始,而可能需要从0
开始。
最后,你在循环中分配2D数组的事实看起来很奇怪。将其移动到循环外部,或将其转换为三元素1D阵列。
答案 1 :(得分:2)
您需要将代码更改为
for (int i = 0; i < 10; i++) {
}
在Java中,数组索引从0
开始。