0

整数の配列を返す SQL クエリがあります。

ArrayList<Integer> intArray = new ArrayList<>(44);

while (result.next()){
   intArray.add(result.getInt("CNT"));     // Insert the result into Java Array List
}

// Insert the result into Java Object
dc = new DCDataObj(
       intArray.get(1), //    Datacenter          1000
       intArray.get(2), //    Zone                1100
       ..................
     )

コードを実行すると、次のエラーが発生します。 java.lang.IndexOutOfBoundsException: Index: 40, Size: 40

ArrayList を使用するときの間違いを教えてください。

4

4 に答える 4

6

1 ではなくインデックス 0 から開始する必要があります

dc = new DCDataObj(
intArray.get(0), //    Datacenter          1000
intArray.get(1), //    Zone                1100
于 2013-02-27T15:39:58.080 に答える
4

それ以外の

dc = new DCDataObj(
           intArray.get(1), //    Datacenter          1000
           intArray.get(2), //    Zone                1100
           ...

使用する

dc = new DCDataObj(
           intArray.get(0), //    Datacenter          1000
           intArray.get(1), //    Zone                1100
           ...

インデックスはゼロベースであるためList(配列や文字列と同様)。


もし私があなただったら、 as パラメーターDCDataObjを取るコンストラクターを提供するかもしれません。そうすれば、単に呼び出すことができますList<Integer>

dc = new DCDataObj(intArray);
于 2013-02-27T15:40:12.047 に答える
2

それを行う別の方法は、次のようなアプローチを使用することです。

    dc = new DCDataObj();
    for (Integer k: intArray) {
        dc.add(k);
    }

次に、要素を動的に追加できます。

于 2013-02-27T17:21:57.343 に答える
1

要素が 40 個しかない配列リストの 41 番目の要素を取得しようとしています。

配列 (および Java のすべてのインデックス付きコレクション) と同様に、インデックスは 0 から始まることに注意してください。

あなたはから始めるべきです:

dc = new DCDataObj(
    intArray.get(0), ... , intArray.get(39) ... 
于 2013-02-27T15:47:05.527 に答える