我的班级Test2
有一个返回区域的方法。它接受一个可变数量的参数(Varargs),我试图使用lengthOfSide
循环将替代Varargs添加到数组breadthOfSide
和for
中,但我得到一个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);
}
}
答案 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。