2016-11-21 85 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; 
} 
相关问题