您的代碼失敗,因爲你試圖去年之後訪問元素數組:最後一個是array[array.length - 1]
,但你試過array[array.length]
當呼叫array[index+1]
和索引已經是最後array.length - 1 + 1
= array.length
。要解決這個問題,只需轉到prelast元素。
Random randomNum=new Random();
int[] array = new int[100];
for(int i = 0; i < array.length; i++) {
array[i] = randomNum.nextInt(100); //0-99
System.out.print(array[i] + " ");
}
for(int index = 0; index < array.length - 1; index++)
{
if(array[index] == array[index+1])
{
System.out.println("Match in "+array[index]);
}
}
但是,我認爲這個代碼不會解決你的問題,因爲它只會找到鄰居dublicates。如果你需要的所有dublicates,你需要雙循環:
Random randomNum=new Random();
int[] array = new int[100];
for(int i = 0; i < array.length; i++) {
array[i] = randomNum.nextInt(100); //0-99
System.out.print(array[i] + " ");
}
for(int i = 0; i < array.length; i++)
{
for(int j = i+1; j < array.length; j++) {
if(array[i] == array[j]) {
System.out.println("Match in "+array[i]);
}
}
}
你想「手動」還是願意使用庫函數?排序數組通常是第一步,因爲重複檢測對於排序後的數組非常簡單。 (這是你已經做的,但你必須迭代到'array.length -1',否則你會得到一個IndexOutOfBound異常。 – flowit
我想手工完成這個過程。想法是找到 – KLane