我正在尝试实现一个简单的函数,它为现有数组添加一个数字但是我在下面的代码中遇到错误,一个例外就是函数addArrayToNumber in the line:“number + = NUMBERS_ARRAY [i]”。我不想抓住异常,只修复代码。
public class Main {
private static final int[] NUMBERS_ARRAY = {1, 2, 3, 4, 5};
public static final void main(String[] args) {
int x = addArrayToNumber(1);
System.out.println("X = " + x);
int y = addArrayToNumber(10);
System.out.println("Y = " + y);
}
private static int addArrayToNumber(int number) {
for (int i = 0; i <= NUMBERS_ARRAY.length; i++) {
number += NUMBERS_ARRAY[i]; /** here it is */
}
return number;
}
答案 0 :(得分:1)
n个成员的数组具有索引0,1,...,n-1。但是,在for循环中,您正在测试i <= NUMBERS_ARRAY.length
,这意味着如果数组的长度为5,那么您尝试访问NUMBERS_ARRAY [5],这显然不存在。相反,使用i < NUMBERS_ARRAY.length
,因此循环变为
for(int i=0; i < NUMBERS_ARRAY.length; i++)
或者,当您循环遍历所有可用于每种语法的元素时,即
for (int element : NUMBERS_ARRAY) {
number += element; /* add every element from NUMBERS_ARRAY to number */
}
并且根本不考虑指数。
答案 1 :(得分:0)
这里得到IndexOutOfBoundsException因为数组长度比最后一个索引大1
在示例数组中有元素[1,2,3]索引从0
开始并且用于获取最后一个元素你需要索引2
,而不是3
,否则你会得到例外。根据这一点,您可以将<=
替换为<
:
for (int i = 0; i < NUMBERS_ARRAY.length; i++) {
number += NUMBERS_ARRAY[i];
}