不能引用其索引不在邊界[0, size() - 1]
的ArrayList
的元素。通過ArrayList()
創建ArrayList
會創建一個尺寸爲0
的列表。要向此數組添加元素,您必須調用添加元素的方法之一,例如add()
。您的第一個電話是get()
,但該列表的大小爲0
,因此即使是get(0)
也會導致IndexOutOfBoundsException
。
怎麼辦取決於列表的預期內容。在你的情況下,我會建議編寫一個幫助函數,該函數生成一個範圍爲的隨機數,不包括指定的數字。您可以在一個簡單的循環中使用該函數來生成整個列表,並將前一個元素傳遞給提到的輔助函數。
實施例:
public static int randomInRange(int a, int b) {
return (int)(Math.random() * (b - a + 1));
}
public static int randomInRangeExcluding(int a, int b, int excluding) {
int result = (int)(Math.random() * (b - a));
if (result == excluding) {
result++;
}
return result;
}
public static List<Integer> generateRandomList(int size) {
ArrayList<Integer> result = new ArrayList<Integer>();
for (int j = 0; j <= size; j++) {
if (j > 0) {
result.add(randomInRangeExcluding(0, size - 1, result.get(j - 1)));
} else {
result.add(randomInRange(0, size - 1));
}
}
return result;
}
,並使用得到的值:
generateRandomList(100);
調用這導致在不具有兩個連續的元件隨機整數列表等於:
[27, 34, 53, 92, 56, 93, 21, 22, 45, 95, 48, 25, 18, 26, 54, 1, 82, 26, 5, 62, 84, 23, 8, 84, 25, 0, 36, 37, 54, 95, 4, 26, 65, 53, 81, 16, 47, 56, 73, 46, 60, 50, 37, 89, 61, 84, 23, 79, 47, 87, 68, 49, 15, 17, 55, 71, 17, 55, 71, 51, 67, 33, 80, 47, 81, 24, 10, 41, 76, 60, 12, 17, 96, 43, 57, 55, 41, 56, 21, 85, 98, 40, 9, 39, 53, 28, 93, 70, 89, 80, 40, 41, 30, 81, 33, 53, 73, 28, 38, 87, 29]
請正確列表代碼;它很難閱讀,我認爲有一個缺失} – Luis
是否因爲你的數組是空的開始? 「如果(randomset.get(j)== randomset.get(j-1)){」 – Zeddy