我需要一些帮助,伙计们。 这是分配:创建一个程序,以从随机数组中删除所有重复项。例如,如果阵列具有的值 4,7,10,4,9,5,10,7,3,5 则数组应改为 4,7,10,9,5,3从阵列中删除重复项
程序应该由两个类DeleteDuplicate和DeleteDuplicateDemo组成。
DeleteDuplicate类应执行以下操作 1.有一个方法来检查重复值。阵列 3. currentsize的 2.跟踪有删除重复的方法(与数组中的下一个值代替重复的值。)
的DeleteDuplicateDemo类应做到以下几点 1.让你的主要方法。 2.创建一个长度为10到10的数字的随机数组。 3.显示原始随机数组。 4.调用DeleteDuplicate方法来查找和删除重复项。 5.显示没有重复的新阵列。
样本输出: [8,5,7,3,2,5,6,3,6,7]
[8,5,7,3,2,6]
下面是DeleteDuplicateDemo代码:
import java.util.*;
public class DeleteDuplicateDemo
{
public static void main(String[] args)
{
Random random = new Random();
int array[]= new int[10];
for (int i = 0; i < array.length; i++)
{
array[i] = random.nextInt(10)+ 1;
}
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
DeleteDuplicate class1 = new DeleteDuplicate();
array = class1.removeDuplicates(array);
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
}
}
这里是DeleteDuplicate代码:
import java.util.Arrays;
public class DeleteDuplicate
{
private static int[] remove(int[] array)
{
int current = array[0];
boolean found = false;
for (int i = 0; i < array.length; i++)
{
if (current == array[i] && !found)
{
found = true;
}
else if (current != array[i])
{
System.out.print(" " + current);
current = array[i];
found = false;
}
}
System.out.print(" " + current);
return array;
}
public static int[] removeDuplicates(int[] array) {
// Sorting array to bring duplicates together
Arrays.sort(array);
int[] finalArray = new int[array.length];
int previous = array[0];
finalArray[0] = previous;
for (int i = 1; i < array.length; i++){
int value = array[i];
if (previous != value){
finalArray[i] = value;
}
previous = value;
}
return finalArray;
}
}
我怎样才能使它发挥作用?我只有在打电话给另一个班时遇到问题。谢谢!
'我只有与调用另一个class.'一个问题,是什么问题?我看到的明显问题是'removeDuplicates'是静态的,所以你不需要'DeleteDuplicate'实例来调用它。另外,如果你发现一个重复的'i'仍然增加,所以你的'finalArray'中有“漏洞” - 是否有意? – John3136
remove()应该做什么?我看到你使用布尔查找找到重复,但你实际上并没有将它用于循环之外的任何其他地方。 –
remove()应该检查重复项并跟踪当前大小。问题是我不确定如何从另一个类DeleteDuplicate调用方法。下面的评论员对此有所帮助,但现在代码删除了最小值,并将0代入删除的值。 –