2016-05-13 81 views
-3

我該如何讓這段代碼中沒有任何重複的數字?
我想要做的就是讓它在這個小塊中不會輸出任何重複的 。如何擺脫此Java代碼中的重複項?

int[] arr = {5,10,44,2, 44,44,5,10,44,2, 44,44}; 
int startScan; 
int index; 
int minindex; 
int minValue; 

for (startScan=0;startScan<(arr.length-1);startScan++){ 
    minindex=startScan; 
    minValue =arr[startScan]; 

    for (index=startScan+1; index<arr.length;index++){ 
     if (arr[index]<minValue){ 
      minValue=arr[index]; 
      minindex=index; 
      } 
     } 
     arr[minindex]=arr[startScan]; 
     arr[startScan]=minValue; 
    } 

for(int x=0; x<arr.length;x++) 
    System.out.println(arr[x]); 
+3

你的程序做了什麼?另外,如果你不關心保持原始順序,但不想在你的集合中重複使用數字,你可以使用'Set'而不是數組... –

+0

「我怎樣才能讓這段代碼中沒有任何重複的數字?」通過編寫檢查重複數字並將其從數組中刪除的代碼。 –

回答

0

您的代碼按升序對int數組進行排序。如果你在你的問題中提到過,而不是讓別人花時間去搞清楚,那本來是很好的。

刪除重複項需要一些額外的代碼。

以下是測試運行的結果。

[2, 5, 10, 44] 

這是您的代碼的修訂版本。它是可運行的,因此您可以複製代碼並將其粘貼到IDE中。

package com.ggl.testing; 

import java.util.Arrays; 

public class RemoveDuplicates { 

    public static void main(String[] args) { 
     int[] arr = { 5, 10, 44, 2, 44, 44, 5, 10, 44, 2, 44, 44 }; 
     int masterIndex = 0; 

     for (int startScan = 0; startScan < (arr.length - 1); startScan++) { 
      int minindex = startScan; 
      int minValue = arr[startScan]; 

      for (int index = startScan + 1; index < arr.length; index++) { 
       if (arr[index] < minValue) { 
        minValue = arr[index]; 
        minindex = index; 
       } 
      } 

      arr[minindex] = arr[startScan]; 
      arr[startScan] = minValue; 

      if (arr[masterIndex] < minValue) { 
       arr[++masterIndex] = minValue; 
      } 
     } 

     int[] newarr = Arrays.copyOf(arr, masterIndex + 1); 
     System.out.println(Arrays.toString(newarr)); 
    } 

}