2017-07-01 45 views
0

我想實現一個簡單的函數,它將數字添加到現有的數組,但我在下面的代碼中得到一個錯誤,一個異常正好在函數addArrayToNumber行:「數字+ = NUM​​BERS_ARRAY [i]「。我不想趕上例外,只是修復代碼。異常在線程,函數添加數組到數組

public class Main { 

private static final int[] NUMBERS_ARRAY = {1, 2, 3, 4, 5}; 


public static final void main(String[] args) { 
    int x = addArrayToNumber(1); 
    System.out.println("X = " + x); 

    int y = addArrayToNumber(10); 
    System.out.println("Y = " + y); 

} 

private static int addArrayToNumber(int number) { 
    for (int i = 0; i <= NUMBERS_ARRAY.length; i++) { 
     number += NUMBERS_ARRAY[i]; /** here it is */ 
    } 

    return number; 
} 
+0

'對(INT I = 0;我

+0

這麼簡單的錯誤,謝謝。 – Soothsayer92

+0

讓我由12s。是的,最常見的錯誤是簡單的錯誤。注意堆棧跟蹤,我敢打賭它說ArrayIndexOutOfBoundsException,所以自然你應該先檢查邊界。 – Luke

回答

1

n個成員的數組具有索引0,1,...,n-1。但是,在for循環中,您正在測試i <= NUMBERS_ARRAY.length,這意味着如果數組的長度爲5,則您嘗試訪問顯然不存在的NUMBERS_ARRAY [5]。相反,使用i < NUMBERS_ARRAY.length,所以循環將成爲

for(int i=0; i < NUMBERS_ARRAY.length; i++) 

或者,當你遍歷你可以使用,每個語法的所有元素,即

for (int element : NUMBERS_ARRAY) { 
    number += element; /* add every element from NUMBERS_ARRAY to number */ 
} 

,而不去想指數在所有。

0

你得到IndexOutOfBoundsException這裏,因爲數組的長度在例如數組比去年指數更大的1具有元素[1,2,3]從指數開始0和獲得最後一個元素,你需要指數2,不3,否則你會得到例外。根據該正確的代碼通過更換<=<

for (int i = 0; i < NUMBERS_ARRAY.length; i++) { 
     number += NUMBERS_ARRAY[i]; 
}