2016-05-13 80 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)); 
    } 

}