2016-11-21 108 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

相關問題