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)); 
    } 

} 
関連する問題