2016-11-12 22 views
-1

私はstartLookを含む数字から始まるヘルパーメソッドを作成しようとしており、その番号から次のnum個の素数を返します。ここに私のコードです:番号javaからの素数配列

public int[] nPrimes(int num, int startLook) { 
    int y = startLook; 
    int x = 2; 
    int[] c = new int[num]; 
    int d = 0; 
    while (x <= y/2) { 
     if (y % x == 0) { 
      x++; 
      continue; 
     } 
     if (y % x != 0) { 
      c[d]=y; 
      d++; 
     } 
     x++; 
    } 
    return c; 
} 

この結果はArrayIndexOutOfBoundsExceptionであり、素数を登録していません。私は間違って何をしていますか?前もって感謝します。

+0

インデントを使用できますか? – Thrasher

+0

あなたのコードを少しトレースしてください(いくつかの値などをプリントアウトしてください)。あなたのロジックにかなり深刻な問題があります。特に、与えられた 'x 'が割り切れないすべての数が素数であるわけではありません。 – CollinD

+0

ああ、私は等価でないと等しいと切り替える必要がありますか?ありがとう、CollinD!そして、ありがとう、フレドリク!私はそれを知らなかった! –

答えて

0

2番目のif文でdがインクリメントされ、num-1(c配列の最後の可能なインデックス)に達したかどうかを決して確認できないため、ArrayIndexOutOfBoundsExceptionエラーが発生します。

whileループの状態を何らかのチェック値に変更することを検討する必要があります。

関連する問題