【发布时间】:2012-07-16 13:05:33
【问题描述】:
我有一个对象列表,每个对象都有一些“qid”。 qid 是整数。列表的“qid”从任何不说的“min”开始,到任何不说的“max”结束。请注意,列表中对象的“qid”不是连续的。意味着例如: min = 6 和 max = 31 但其中只有 16 个对象,它们的 qid 在 [min,max] (包括最小值和最大值),因此没有任何对象存在 (31-6+1 )-16 = 10 qids。意思是这十个qid,没有任何对象存在。但是只有 16 个对象具有有效的 qid。
现在我有一个大小为 10 的 int 数组,我想在其中随机存储 10 个对象,但它们的 qid 有效。表示这十个对象必须来自这 16 个而不是来自这 26 个。
我正在做以下事情
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 = 原始列表,包含 16 个有效对象,其中 qid 有效,26 个对象,最大值 = 31,最小值 = 6。
- finalList = 将存储随机选择的 10 个对象(16 个不是 26 个)的最终列表。
- checkList = 大小为 10 的整数数组,其中仅存储随机选择的 10 个 finalList 对象的 qid(而非其他属性)。
我收到indexoutofboundsexception。有人可以帮我吗?
【问题讨论】:
-
究竟哪一行给出了越界?
-
qidList 的类型是什么?它是一个 ArrayList 吗?
-
不是 ObjectList。对不起。我不清楚哪条线的例外。因为我没有收到任何服务器错误日志。只有浏览器显示 outofboundsException。我现在该怎么办..?
-
我认为我们帮助您的部分问题是您对各种列表中确切包含的内容的解释并不完全清楚,尤其是第一段的最后两三句话。问题似乎很明显,有些 checkList[j] 不包含在 qidList 中,但除此之外,如果没有更多上下文,很难说为什么。
标签: java math random arraylist indexoutofboundsexception