我增加数组大小的方法不起作用?

时间:2019-10-13 18:47:18

标签: java arrays methods indexoutofboundsexception collatz

我正在制作一种计算Collat​​z猜想的方法,并给出给定起始编号,并将其元素(以双精度数组形式)返回。它是称为计算器的类的一部分。所以我的类“计算器”看起来像这样:

public class Calculator {

    public static void increaseArraySize(double []a) {
        double []an = new double[a.length+1];
        for(int i = 0; i<a.length; i++) 
            an[i] = a[i];
        a = an;
    }

    public static double[] collatzA(double n){
        double []a = new double[2]; 
        int i = 0;

        while(n>1) {
            a[i] = n;
            if(n%2==0) 
                n = n/2;
            else 
                n = 3*n+1;
            i++;
            increaseArraySize(a);
        }
        return a;
    }

}

但是,当我尝试使用main方法在单独的类中运行它时:

public class CalculatorTest {
    public static void main(String[] args) {

        System.out.println(Calculator.collatzA(26)); //calculate collatz with 26 as input

    }
}

它显示此错误:线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:2

因此,看来我的方法gainArraySize无法正常工作。 知道为什么吗?

0 个答案:

没有答案