Test2数组初始化错误

时间:2017-05-06 06:06:46

标签: java arrays foreach indexoutofboundsexception

我的班级Test2有一个返回区域的方法。它接受一个可变数量的参数(Varargs),我试图使用lengthOfSide循环将替代Varargs添加到数组breadthOfSidefor中,但我得到一个ArrayOutofBoundException 。为什么我得到这个,我该如何解决?

class Test2 {
    public double returnArea(double... corner){
        double[] lengthOfSide = {};
        double[] breadthOfSide = {};
        int i = 0;

        for(double x : corner){
            lengthOfSide[i]  = x;
            breadthOfSide[i] = x;

            System.out.println(lengthOfSide[i]);
            System.out.println(breadthOfSide[i]);
            i++;
        }
    }
}

public class Test1 {
    public static void main(String args[]){
        Test2 total = new Test2();
        total.returnArea(34.2,22.3,332.2,223.3,22.4);
    }
}

1 个答案:

答案 0 :(得分:1)

您基本上是在尝试修改不允许的现有数组......

java中的数组是固定大小的,您无法在创建后修改它们。

基本上,

double[] lengthOfSide = {};
double[] breadthOfSide = {};

这一行为你创建了一个数组(空数组)。 你在循环中尝试为不存在的数组中的索引赋值。

 lengthOfSide[i]  = x;
 breadthOfSide[i] = x;

结果是除外

如果你想实现我认为正确的你应该将它初始化到你想要的长度,即。 corner.length

所以它应该是,

double[] lengthOfSide = new double[corner.length];
double[] breadthOfSide = new double[corner.length];

如果您仍想使用相同的流程,请尝试考虑使用arraylist