それぞれがいくつかの「qid」を持つオブジェクトのリストがあります。qid
整数です。リストの「qid」は、「min」とは言えず、「max」とは言えません。リスト内のオブジェクトの「qid」は連続していないことに注意してください。たとえば、最小=6および最大=31ですが、qidが含まれるオブジェクトは16個しかない[min,max]
ため(最小と最大の両方を含む)、(31-6 + 1)-16のオブジェクトは存在しません。 =10qids。これらの10個のqidを持つことを意味し、オブジェクトは存在しません。ただし、有効なqidを持つオブジェクトは16個しか存在しません。
これで、正確にサイズ10のint配列ができました。この配列には、ランダムに10個のオブジェクトを格納しますが、それらの有効なqidを使用します。つまり、これらの10個のオブジェクトは、26個ではなく16個のものでなければなりません。
そして私は次のことをしています
for (int j = 0; j < 10; j++) {
checkList[j] = min + (int) (Math.random() * ((max - min) + 1));
if (qidList.get(checkList[j]) == null ) {
j--;
continue;
} else {
finalList.add(j,qidList.get(checkList[j]));
}
}
- qidList = max=31およびmin=6の26個のオブジェクトのうち有効なqidを持つ16個の有効なオブジェクトを含む元のリスト。
- finalList =ランダムに選択された10個のオブジェクト(26個のうち16個からではなく)が保存される最終リスト。
- checkList =サイズ10の整数配列。ランダムに選択された10個のfinalListオブジェクトのqid(他の属性ではない)のみが格納されます。
私は得てindexoutofboundsexception
います。誰かが私を助けることができますか?