2016-11-21 6 views
-2

intの配列内の3つの連続する数字が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

forループを二重に増やしていますが、メソッドシグネチャにも問題があります。それは次のようになります。

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

コードを作成するには2つのことが必要です。

  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としてメソッドに名前を付けます。

関連する問題