0

メソッドを使用して重複した番号を削除し、重複していない番号を返そうとしていますが、実際にはメソッドで立ち往生しています。これは私のコードです:

import javax.swing.JOptionPane;
public class duplicateRemover{
     public static void main(String[] args) {
    int[] array = new int[5];

    for (int i=0; i<array.length;i++) {
      String s=JOptionPane.showInputDialog(null,"PLEASE ENTER AN INTEGER:","INTEGERS",JOptionPane.QUESTION_MESSAGE);
      array[i] = Integer.parseInt(s);

    }
    removeDuplicates(array);
   for (int i=0; i<array.length;i++) {
    JOptionPane.showMessageDialog(null,array[i],"UNIQE INTEGERS",JOptionPane.PLAIN_MESSAGE);
   }
     }
public static int[] removeDuplicates(int a []) {
   int []removedDup=new int[a.length];

  for (int i = 0; i < a.length; i++) {
    for (int j = i-1; j < a.length; j++){
      if (a[i] == a[i]) {
        removedDup[i] = j;
        break;

  }

 }
4

4 に答える 4

0

各値の配列をスキャンし、互いに比較します (ネストされた「for」が必要です)。次に、重複のインデックスを含むリストを保持し、サイズ a.length-listOfDuplicateIndexes.size() の配列をインスタンス化します。 ..インデックスが int ListOfDuplicateIndexes ではない a[] コンポーネントでこの配列を埋める

于 2013-05-20T14:31:23.933 に答える
0

明らかに、要素をマルチループして他の要素と比較しようとしているので、その要素の重複が存在する場合は、それを削除してそのインデックスにフラグを立てます。あなたが書いたこのコードはバグがありますが、あなたの主な問題は、要素をそれ自身のものと比較するif (a[i] == a[i])ことif (a[i] == a[j])です

于 2013-05-20T14:29:45.343 に答える
0

これは次のようになります。

    public static int[] removeDuplicates(int a[]) {
    int n = a.length;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n;) {
            if (a[j] == a[i]) {
                for (int k = j; k < n-1; k++)
                    a[k] = a[k + 1];
                n--;
            } else
                j++;
        }
    }

     int[] newArray = new int[n];
     System.arraycopy(a, 0, newArray, 0, n);

     return newArray;
}
于 2013-05-20T14:32:43.043 に答える