Java数组中的设置值返回错误

时间:2016-06-15 04:00:31

标签: java arrays

这个方法应该在给定索引的情况下在数组中设置一个值。错误是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);
  }
}

2 个答案:

答案 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){