让我先说这是一个我有问题的作业问题。迭代排序后的数组以删除重复项
我已经排序了一个数组,我需要做的是使用另一个数组通过迭代遍历第一个并比较相邻的项目,然后将非重复项添加到新数组来删除重复项。完成之后,我将旧数组=设置为新数组。我不习惯Java,因此我遇到了一些问题,我认为正确地进行了迭代设置。
public static void main(String[] args) {
args = new String[] { "data/list1.txt" };
StdIn.fromFile("data/list2.txt");
// StdOut.toFile ("finished.txt");
int[] whitelist = In.readInts(args[0]);
Arrays.sort(whitelist);
int newArray[] = new int[whitelist.length];
for (int i = 0; i < whitelist.length-1; i++) {
int k = 0;
if(whitelist[i+1] > whitelist[i])
newArray[k] = whitelist[i];
k++;
StdOut.println(java.util.Arrays.toString(whitelist));
whitelist = newArray;
}
for (int i=0; i<newArray.length;i++){
StdOut.println(java.util.Arrays.toString(newArray));
}
此代码段是更大的二进制搜索的一部分,但这是我遇到问题的部分。
我的输出除了没有删除重复项目也打印出几次。
任何方向将不胜感激。
关于输出的问题,你是循环阵列上每一次打印整个事情。只需调用一次'StdOut.println(java.util.Arrays.toString(newArray));'最后就足够了。 –
尝试决定你的'if(白名单[i + 1]>白名单[i])'陈述后的大括号。将它改为'if(whitelist [i + 1]> whitelist [i]){'并决定'}'应该去的地方。 – OldCurmudgeon
我会在您的调试器中遍历您的代码,以了解它在做什么。 –