2016-05-08 7 views
2

私はJavaにとって非常に新しいです。ご質問が簡単すぎる場合は、ごめんなさい。配列がフィボナッチ配列の一部であるかどうかを評価しようとしています。私は "for"ループ全体が壊れていないときに "true"の値を返す方法を知らない。何か案は?前もって感謝します!これは私が今のところ持っているものです。for-loop Java戻り値

public boolean checkFibb(ArrayList<Integer> array1) { 
    int i; 
    int fibb; 

    if (array1.size() < 3) { 
     System.out.println("Your array is too short!"); 
    } else { 
     for (i = 0; i <= array1.size() - 2; i++) { 
      fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i)); 

      if (fibb != 0) { 
       System.out.println("Elements are not part of the Fibonacci sequence."); 
       break; 
      } else { 
       System.out.println("Elements are part of the Fibonacci sequence."); 
      } 
     } 
    } 

    return true; 
} 
+5

ループ内で 'break;'を使用する代わりに、 'return false;' –

答えて

3

あなたはいつもの方法からtrueを返します。

public boolean checkFibb(ArrayList<Integer> array1) { 
    int i; 
    int fibb; 
    boolean isFibb = true; 

    if (array1.size() < 3) { 
     System.out.println("Your array is too short!"); 
     isFibb = false; 
    } else { 
     for (i = 0; i <= array1.size() - 2; i++) { 
      fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i)); 

      if (fibb != 0) { 
       System.out.println("Elements are not part of the Fibonacci sequence."); 
       isFibb = false; 
       break; 
      } else { 
       System.out.println("Elements are part of the Fibonacci sequence."); 
      } 
     } 
    } 
    return isFibb; 
} 
2

あなたは要素がフィボナッチ数列の一部ではないことを検出したときに、ループの現在の反復を壊しているされて、あなたのコードでやっています。 breakは現在のループの現在の反復のみを停止します。実行したいのはこの時点で関数からreturn falseです。配列が実際にフィボナッチ配列であることを検出すると、この時点でreturn trueになります。

配列が短すぎる場合は、フィボナッチシーケンスではないため、この時点でreturn falseとなります。

public boolean checkFibb(ArrayList<Integer> array1) { 
int i; 
int fibb; 

if (array1.size() < 3) { 
    System.out.println("Your array is too short!"); 
    return false; 
} else { 
    for (i = 0; i <= array1.size() - 2; i++) { 
     fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i)); 

     if (fibb != 0) { 
      System.out.println("Elements are not part of the Fibonacci sequence."); 
      return false; 
     } else { 
      System.out.println("Elements are part of the Fibonacci sequence."); 
      return true; 
     } 
    } 
} 

}

+0

あなたの答えをありがとう!まだ何かが間違っているようです。私はEclipseで自分のコードを編集しており、私のfor-loopのi ++部分が「デッドコード」であることを示しています。さらに、10 + 15が26に等しくなくても、配列は[2、4、6、10、15、26]の真の値を返すので、コードは正しく動作しません。さらにもう1つの質問ですが、私はcheckFibb関数の戻り値を必要としませんか? –

+0

はい私は完全にコードを修正していない、私はちょうどリターンステートメントを使用する方法を示していた。 戻り値の型は確かにブール値です。コンパイラーを満足させるためには、関数の最後に別のreturnステートメントを追加する必要があります。 :) –