这个方法应该在给定索引的情况下在数组中设置一个值。错误是ArrayIndexOutOfBoundsException
,它出现在以下行中:
GrowingArray [index] = value;
但是,我做了一些研究,使用array [index] = value
似乎是在数组中设置值的合法方法。正确方向的指针会有所帮助。
public void set (int index, int value) {
if (index <= GrowingArray.length) {
GrowingArray[index] = value;
} else {
int [] destination = new int [12/10*GrowingArray.length];
destination [index] = value;
System.arraycopy(destination, 0, GrowingArray, 0, destination.length);
}
}
答案 0 :(得分:1)
Java数组有0个基于索引(比如计算机科学中99%的东西),因此检查<=
(而不是<
)将允许,例如4个数组的索引4 ,这将以债券结束。
if (index <= GrowingArray.length){
GrowingArray[index] = value;
另外12/10
是一个整数除法,产生1
,如果你想增加20%的容量,你应该使用float
值,例如:
int newCapacity = (int)(oldCapacity*1.2f);
答案 1 :(得分:1)
在java数组的索引中以0开头,
所以当index == GrowingArray.length时,GrowingArray的最大索引是[index - 1]
尝试改变
if (index <= GrowingArray.length)
到
if (index < GrowingArray.length){