2016-11-21 89 views
0

我正在爲一個程序寫下面的代碼,該程序返回一個布爾值,這個布爾值是否是一個int數組中的三個連續數加起來爲7.我得到下面的異常而不是我想要的輸出:「java.lang .ArrayIndexOutOfBoundsException:5" 。請有人解釋我如何解決這個問題?爲什麼我得到java.lang.ArrayIndexOutOfBoundsException異常?

public static void main(String[] args) {  
    int[] numbers ={2,1,5,1,0}; 
    System.out.println(luckysevens(numbers));  
} 

public static boolean luckysevens(int array[]) { 

    boolean isLucky= false; 

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

     if (array[i]+array[i+1]+array[i+2]==7){ 
      isLucky=true; 
     } 
     else { 
      i++; 
     } 
     } 

    return isLucky; 
} 

} 
+0

您需要更改的,如果條件爲array.length-2 – Venkat

+0

此外,您需要刪除else條件或刪除循環中的增量部分 – Venkat

回答

0

因爲要訪問超過其長度的數組元素。

對於長度爲L的數組,您可以訪問索引範圍爲0到L-1的元素。

當您訪問超出此索引範圍的元素時,會出現上述異常。

你甚至不需要在else條件下增加。

public static void main(String[] args) {  
    int[] numbers ={2,1,5,1,0}; 
    System.out.println(luckysevens(numbers)); 

} 

public static boolean luckysevens(int array[]) { 

    boolean isLucky= false; 



    for (int i=0; i<array.length-2; i++){ 

     if (array[i]+array[i+1]+array[i+2]==7){ 
     isLucky=true; 
     } 
     } 


return isLucky; 
} 

} 
+0

好的,但該方法仍然返回false,即使它應該爲luckysevens(數字)返回true。這是爲什麼發生? –

0

你正在比較0-5(即6個元素,但你的數組只有5個),所以你要走出界限。

所有你需要做的是從0到去 - array.length-1;因此必須改變條件的一部分i<=array.length;喜歡這個i<(array.length-1);

public static void main(String[] args) { 
     int[] numbers ={2,1,5,1,0}; 
     System.out.println(luckysevens(numbers)); 
    } 


    public static boolean luckysevens(int array[]) { 

    boolean isLucky= false; 

    for (int i=0; i<(array.length-1); i++){ 

     if (array[i]+array[i+1]+array[i+2]==7){ 
      isLucky=true; 
     } 
     else { 
      i++; 
     } 
     } 

    return isLucky; 
} 
0
public static void main(String[] args) 
{  
    int[] numbers ={2,1,5,1,0}; 
    System.out.println(luckysevens(numbers));  
} 

public static boolean luckysevens(int array[]) 
{ 
    boolean isLucky= false; 
    //Use array.length-2 in the code 
    for (int i=0; i<=array.length-2; i++) 
    { 
     if (array[i]+array[i+1]+array[i+2]==7) 
     { 
      isLucky=true; 
      return isLucky; 
     } 
    } 
    return isLucky; 
} 
相關問題