从3中减去最后一个元素时的ArrayIndexOutOfBoundsException

时间:2015-07-24 16:07:02

标签: java

任何人都可以尝试解决这个问题,因为我正在

  

ArrayIndexOutOfBoundsException异常

当试图从3中减去最后一个元素时,如果结果不存在,那么它应该返回结果的下一个元素。

public static int[] returnNum(){
    int[] numbers = {1,2,4,6,8,10};
    int[] num = {};
    for(int i = numbers.length-1; i > 0; i--){
        if(numbers[i]-3 == numbers[i-1]){
            num[numbers.length-1-i] = numbers[i-1];
        }else{
            num[numbers.length-1-i] = numbers[i-1];
        }
    }
    return num;
}
public static void main(String[] args) {        
    System.out.println(Test.returnNum());
}

2 个答案:

答案 0 :(得分:3)

您的数组“num”被初始化为一个大小为0的空数组(“{}”)。

尝试在if的任何位置的else分支中访问它将抛出IndexOutOfBound。

else{
        num[numbers.length-1-i] = numbers[i-1];
    }

(注意:对于if的主分支也是如此,只是在给定静态初始化示例的情况下,它从未达到过。)

初始化数组后,您无法动态添加数据。如果这是您的用例,您应该查看List data structure

答案 1 :(得分:0)

num的{​​{1}} length。请使用0

对其进行初始化