2016-06-15 72 views
0

該方法假定在給定索引的情況下在數組中設置一個值。該錯誤是一個ArrayIndexOutOfBoundsException,其發生就行了:Java數組中的設置值返回錯誤

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); 
    } 
} 

回答

1

Java數組有0基於指數(如在計算機科學的東西99%),因此檢查<=(而不是<)將允許,例如,索引4,用於大小爲4的陣列,這將結束脫離債券。

if (index <= GrowingArray.length){ 
    GrowingArray[index] = value; 

此外12/10是一個整數除法如果要通過增加20%的容量應該使用float值其產生1,例如:

int newCapacity = (int)(oldCapacity*1.2f); 
+0

謝謝!我沒有意識到<=允許我的數組檢查超出範圍。我改變它<如你所說,錯誤消失了。 – pianos

1

在Java數組的索引從0開始,

所以當索引== GrowingArray.length,GrowingArray的最大索引爲[指數 - 1]

什麼約噸RY改變

if (index <= GrowingArray.length) 

if (index < GrowingArray.length){