我试图通过创建一个临时数组来从列表中删除重复项,该数组存储重复项所在位置的索引,然后将原始数组复制到另一个临时数组中,同时将索引与我存储在我的第一个临时数组中的索引进行比较.
public void removeDuplicates()
{
double tempa [] = new double [items.length];
int counter = 0;
for ( int i = 0; i< numItems ; i++)
{
for(int j = i + 1; j < numItems; j++)
{
if(items[i] ==items[j])
{
tempa[counter] = j;
counter++;
}
}
}
double tempb [] = new double [ items.length];
int counter2 = 0;
int j =0;
for(int i = 0; i < numItems; i++)
{
if(i != tempa[j])
{
tempb[counter2] = items[i];
counter2++;
}
else
{
j++;
}
}
items = tempb;
numItems = counter2;
}
虽然逻辑似乎正确,但我的编译器在给我一个 arrayindexoutofbounds 错误
tempa[counter] = j;
我不明白计数器如何增长到超过 items.length 的值,逻辑缺陷在哪里?