2016-11-21 69 views
-2

我正在为一个程序写下面的代码,该程序返回一个布尔值,这个布尔值是否是一个int数组中的三个连续数字加起来为7.它没有返回正确的布尔值,我努力去理解为什么。为什么我的方法的逻辑不输出正确的布尔值?

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; 
     } 
     else { 
      i++; 
     } 
     } 


return isLucky; 
} 

} 
+3

你是否已经完成了IDE调试器中的代码?这会很快指出问题。 –

+0

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – David

+0

@Jonathan Math看看下面的解决方案,让我知道它是否有帮助。 – user3437460

回答

-1

您是双增加你的循环,你也有你的方法签名的问题。它应该是:

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

两件事你必须为了使代码工作要做!

  1. 去除其他部分具有可变的增量我(这将破坏在循环中的登录)

  2. 做循环用<代替< =(此将导致IndexOutOfBoundsException

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

因为每一次迭代中,i应该增加你可以离开了其他部分。如果我是你,我会做它:

public static boolean luckysevens(int array[]) { 

    if(array.length < 3) 
     return false; 
    for (int i=0; i<array.length-2; i++){ 
     if (array[i]+array[i+1]+array[i+2] == 7) 
      return true; 
    return false; 

} 

注:它最好命名方法luckySevens,而不是luckyseven