我正在尝试创建一个 fillArray 方法,该方法用 20 个随机值填充数组,并对每三个值求和。我在第 21 行(也就是调用该方法时)收到 ArrayExceptionOutOfBounds。通过调试,我看到数组填充了正确的值,并且正确计算了总和。我想知道错误是什么。
public static void fillArray(){
//adding up A[0], A[3], A[6}, ...
double[] A = new double[20];
for(int i = 0; i < A.length; i++)
A[i] = Math.random();
double sum = 0;
int k = 0;
do{
k += 3;
sum += A[k];
}while(k < 20);
System.out.println("sum = " + sum);
}
我再次希望确定错误的原因,而不一定是修复它的方法。
最佳答案
这是您的问题:
do{
k += 3;
sum += A[k];
}while(k < 20);
K 将等于 0,然后是 3,然后是 6,等等,直到达到 21,然后您尝试访问超出范围的 A[21]。
这是因为当 while 循环第 6 次迭代时 k = 18 时,(k < 20)
为 true,因此 while 循环继续,并向 k 添加另一个 3,使其等于 21。之后,while 循环停止,因为 k 不再小于 20,k 的值为 21。
关于java - 返回方法时出现 ArrayExceptionOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29177257/