您的代码失败,因为你试图去年之后访问元素数组:最后一个是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