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

} 
Смежные вопросы