从方法返回数组中的非重复数字

时间:2013-05-20 14:23:09

标签: java

我正在尝试使用方法删除重复的数字并返回非重复的数字,实际上我现在卡在方法中。 这是我的代码:

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 个答案:

答案 0 :(得分:1)

我是否理解您想获得仅出现一次的所有整数?这可以使用集合API轻松完成。

public static int[] removeDuplicates(int[] a) {
    Set<Integer> unique = new TreeSet<Integer>();
    List<Integer> results = new ArrayList<Integer>();
    for (int i = 0; i < a.length; i++) {
        if (!unique.add(a[i]))
            results.add(a[i]);
    }
    int[] ret = new int[results.size()];
    for (int i = 0; i < results.size(); i++)
        ret[i] = results.get(i);
    return ret;
}

答案 1 :(得分:0)

显然你正在尝试使用多循环元素并将其与其他元素进行比较,因此如果存在该元素的副本,则将其删除并标记其索引。你写的这段代码是错误的,但我现在看到你的主要问题是你将元素与它自己进行比较 我看到if (a[i] == a[i])if (a[i] == a[j])然后你的代码应该工作或抛出索引超出绑定异常

答案 2 :(得分:0)

扫描你的数组中的每个值并相互比较(你应该有一个嵌套的“for”),然后保留一个带有重复索引的列表,实例化一个大小为a.length-listOfDuplicateIndexes.size()的数组。 .....使用[]组件填充此数组,其索引不是int ListOfDuplicateIndexes

答案 3 :(得分: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;
}