0

最初の例

int windowStart = 0;

for (int i = 0; i + windowSize < fileArray.size(); i++) {
  ArrayList <Character> window = new ArrayList <Character> ();
  for (int s = windowStart; s <= windowStart + windowSize; s++) {
    window.add(fileArray.get(s));
  }
  windowStart++;
}

対。

2番目の例

int ind = 0;
for (int i = 0; i + windowSize < fileArray.size(); i++) {
  for (int b = ind; b <= windowSize + ind; b++) {
    window.add(fileArray.get(b));
  }
  ind++;
}

最初のものはスローしますjava.lang.IndexOutOfBoundsExceptionが、2番目のものはスローしませんが、うまく機能します。fileArrayどちらも同じですが、2 の場合はwindow配列が属性として定義されますが、最初の配列では、「ウィンドウ」配列がメソッド (および for ループ) 内で定義されます。それは違いがありますか?

4

2 に答える 2

2

IndexOutOfBoundsExceptionリストに値を追加するための を取得できません。問題は、 の値が配列またはリストsの実際のサイズ以上であることです。fileArray

また、両方の例のループは同等であるため、投稿したばかりのコード行の外側で問題が見つかるはずです。

デバッグを試みます ( IndexOutOfBoundsExceptionIDE を使用している場合は中断します。それ以外の場合は、いくつかの簡単なステートメントを追加して、予想よりも大きいSystem.out.println理由を見つけてください。s

于 2012-12-03T07:20:48.727 に答える