繁体   English   中英

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

[英]return non duplicates numbers in array from method

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

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;

  }

 }

我是否理解要获取仅出现一次的所有整数? 使用collections 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;
}

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

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

这样可以:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM