讓我先說這是一個我有問題的作業問題。迭代排序後的數組以刪除重複項
我已經排序了一個數組,我需要做的是使用另一個數組通過迭代遍歷第一個並比較相鄰的項目,然後將非重複項添加到新數組來刪除重複項。完成之後,我將舊數組=設置爲新數組。我不習慣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
我會在您的調試器中遍歷您的代碼,以瞭解它在做什麼。 –