2016-09-26 6 views
0

イメージビューにステップバイステップで多くの画像をロードするコードを記述しました。しかし、私はバウンド例外のインデックスから抜け出すコード実行した場合:無効なインデックス16を、サイズはここ15バインドされていない例外のインデックスが無効です。インデックスが無効です。16、サイズは15です。

である私のコードは

int steps = 5; 
int tmp = 0; 
for (int j = 0; j < imageUrl.size(); j++) { 
    if (imageUrl.size() < steps) { 
     for (int i = 0; i < imageUrl.size(); i++) { 
      buildPicture(imageUrl.get(tmp)); 
      imageUrl.remove(tmp); 
      tmp++; 
     } 
    } else if (imageUrl.size() >= steps) { 
     for (int i = 0; i < steps; i++) { 
      buildPicture(imageUrl.get(tmp)); 
      imageUrl.remove(tmp); 
      tmp++; 
     } 
    } 
} 

で、あなたは私が私のコードを固定することができますしてください?アレイが0で開始しているため

+1

に成長していること、それは非常に明確にしますあなたは、デバッガでコードをステップ実行しようとしたことがありますか? – JonK

+2

このコードから、 'tmp'の価値がどのようになると思いますか?それを達成しようとしているのは何ですか?外側のループの2番目の反復の開始時に何があるのか​​考えましたか? –

+0

はい、exapleとして、私は24のimageUrlサイズで試して、ループは12回実行した後に終了しました。 – dudi

答えて

0

サイズは、最初の要素のインデックスは、これを試し常に0

+0

と私はそれを修正することができますか? ArrayListの途中でループが終了する理由を示します。私はArryListのサイズを24と19で試しました。ループは12と10の後に終了します – dudi

0

あるため、最後の要素インデックスが14である15に等しい、forループ、一度あまり実行しない1: EDIT私はあなたが何をしようとしているのか分からず、なぜループの現在の値の代わりにtempを使っているのかわかりません。このかかわらを試してみてください、そうでない場合、私はわからないんだけど...

int steps = 5; 
for (int j = 0; j < (imageUrl.size() - 1); j++) { 
    if (imageUrl.size() < steps) { 
     for (int i = 0; i < (imageUrl.size() - 1); i++) { 
      buildPicture(imageUrl.get(i)); 
      imageUrl.remove(i); 
     } 
    } else if (imageUrl.size() >= steps) { 
     for (int i = 0; i < steps; i++) { 
      buildPicture(imageUrl.get(i)); 
      imageUrl.remove(i); 
      i++; 
     } 
    } 

}

+0

ヒントをありがとう。私はそれを試してみましたが、コードを実行すると、私はこれを取得します:java.lang.IndexOutOfBoundsException:無効なインデックス9、サイズが9 – dudi

+0

「何か」または「何か」のインデックスを指していますか? – Cutter

+0

いいえ、申し訳ありません。 、PID com.example.dudi.myidea:25617 java.lang.IndexOutOfBoundsException: プロセス:これはログで無効なインデックス11、サイズがjava.util.ArrayList.throwIndexOutOfBoundsExceptionで11 ある(ArrayList.java:255) java.util.ArrayList.get(ArrayList.java:308)の at – dudi

0

セイIMAGEURLは、上記のコメントのように24のサイズを有しています。 tmpは最終的に24より大きい値になり、imageUrl.get(tmp)を呼び出そうとすると、存在しない要素を取得しようとしているため、例外がスローされます。

ここで何をしようとしているのかよく分かりませんが、これが役立つことを願っています。

0

MCVEまたはSSCCEの投稿依頼の背後にある理由について簡単に説明します。以下のようなMCVE:

public static void main(String[] args){ 

    //use a variable instead of imageUrl.size() 
    int imageUrlsize = 15; 
    int steps = 5; 
    int tmp = 0; 
    for (int j = 0; j < imageUrlsize; j++) { 
     if (imageUrlsize < steps) { 
      for (int i = 0; i < imageUrlsize; i++) { 
       System.out.println("imageUrlsize < steps " + tmp); 
       tmp++; 
      } 
     } else if (imageUrlsize >= steps) { 
      for (int i = 0; i < steps; i++) { 
       System.out.println("imageUrlsize >= steps "+ tmp); 
       tmp++; 
      } 
     } 
    } 
} 

は、サイズののためには74

関連する問題