1

jdomパーサーを使用してデータを分割し、データベースに挿入することにより、カンマ区切りで.csvファイルをロードしています。

しかし、どういうわけか、タイトルが述べたようにこのエラーに遭遇しました。.csv ファイルには 20 万を超えるレコードが含まれています。

約4000レコードまで読み取ると、プログラムはこのエラーをスローしました。index と size は同じ値ですが、その前にすべてのレコードを正常に挿入できます。ほぼ 4k になるまで、なぜこのエラーが発生するのか疑問に思っています。

これは私の for ループです:

for(int x = 0; x < FLODS.getBufferSize(); x++)

しかし、私はインターネットで検索を行いました:彼らはこの方法を提案しています..

for(int x = 0; x < FLODS.getBufferSize()-1; x++)

何か案が?ありがとう :)

4

4 に答える 4

7

java.lang.IndexOutOfBoundsException: Index: xx, Size: xx

非常に一般的なException. これは、(たとえば)のサイズもである のインデックスにアクセスしようとしていることを明確に示しています。サイズが の場合、までしかインデックスにアクセスできないことを常に覚えておいてください。サイズも である indexにアクセスしようとすると、必ずこのエラーが発生します。xxArrayListxxxxxx-1xxxx

したがって、 Internetからの提案で-1は、どのようなサイズでもトラバースするように求められます。

あなたのループは問題ないようですが、ある時点で現在の値を超えるFORループ内のインデックスにアクセスしようとしている可能性があります。1x

于 2013-03-04T15:37:52.883 に答える
0

java.lang.IndexOutOfBoundsException は、ある種のインデックス (配列、文字列、ベクトルなど) が範囲外の場合に表示される例外のタイプであるため、割り当てられたメモリを確認してください。for ループの前およびループ内のコードを表示せずに言えることは、それだけです。

于 2013-03-04T15:56:15.917 に答える
0

これは、ネストされた For ループがあり、2 番目の変数で 1 番目の変数にアクセスしようとした場合の誤りです。

for(int i = 0;i<something.size(); i++) {
     //Some manipulations here..
     for(int j = 0;j<somethingElse.size(); j++) {
          //using blah(i) instead of blah(j) causes this issue
     }
}
于 2017-02-24T18:09:26.387 に答える