线程中的异常,函数向数组添加数字

时间:2017-07-01 18:24:29

标签: java arrays numbers

我正在尝试实现一个简单的函数,它为现有数组添加一个数字但是我在下面的代码中遇到错误,一个例外就是函数addArrayToNumber in the line:“number + = NUM​​BERS_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;
}

2 个答案:

答案 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]; 
 }