Java 在整数数组中搜索重复的数字

Java 在整数数组中搜索重复的数字,java,Java,我想在数组中找到重复的数字。 对于这一点,我用下面的方法进行比较,但我无法得到所需的输出 新数组应包含无重复性的数字 我试过以下方法 public static void main(String[] args) { int[] a={1,2,3,6,3,5,7,3,9,7}; int[] k=new int[a.length]; for(int i=0;i<a.length;i++){

我想在数组中找到重复的数字。 对于这一点,我用下面的方法进行比较,但我无法得到所需的输出

新数组应包含无重复性的数字

我试过以下方法

public static void main(String[] args) {

              int[] a={1,2,3,6,3,5,7,3,9,7};

              int[] k=new int[a.length];

              for(int i=0;i<a.length;i++){

                     for(int j=1;j<a.length;j++){
                           if(a[i]==a[j]){
                                  k[i]=a[j];    
                           }
                     }

              }

              for(int n=0;n<k.length;n++){
                     System.out.print(k[n]);
              }

       }
publicstaticvoidmain(字符串[]args){
int[]a={1,2,3,6,3,5,7,3,9,7};
int[]k=新的int[a.长度];

对于(inti=0;i您应该将内部循环从
i+1
迭代到length,将其更改为following

for(int i=0;i<a.length;i++){
   for(int j=i+1;j<a.length;j++){
      if(a[i]==a[j]){
         k[i]=a[j];    
      }
   }
}
for(inti=0;iNice一个

public static void main(String[] args) {

    int[] a={1,2,3,6,3,5,7,3,9,7};

    int[] k=new int[a.length];

    Set<Integer> dups = new HashSet<Integer>();

    int index = 0;

    for(int i=0;i<a.length;i++){
        boolean found = false;
           for(int j=1;j<index && !found;j++){
                 if(a[i]==k[j]){
                     // found duplicate.
                     found = true;
                     dups.add(a[i]);
                 }
           }
           if (!found)
           {
               k[index++]=a[i];
           }

    }

    System.out.print("Unique entries: ");
    for(int n=0;n<index;n++){
        System.out.print(k[n]+" ");
 }

    System.out.println("\nDups:" + dups);
publicstaticvoidmain(字符串[]args){
int[]a={1,2,3,6,3,5,7,3,9,7};
int[]k=新的int[a.长度];
Set dups=new HashSet();
int指数=0;

对于(inti=0;i,如果您对查找重复项不感兴趣,而只对删除重复项感兴趣。以下方法将起作用

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;


public class Test
{
    public static void main(String args[])
    {
        Integer[] a = new Integer[] {1,2,3,6,3,5,7,3,9,7};
        Set<Integer> numberset = new HashSet<Integer>(Arrays.asList(a));
        Integer[] output = numberset.toArray(new Integer[0]);
        for (Integer i : output)
        {
            System.out.println(i);
        }   
    }

}
导入java.util.array;
导入java.util.HashSet;
导入java.util.Set;
公开课考试
{
公共静态void main(字符串参数[])
{
整数[]a=新整数[]{1,2,3,6,3,5,7,3,9,7};
Set numberset=newhashset(Arrays.asList(a));
整数[]输出=numberset.toArray(新整数[0]);
for(整数i:输出)
{
系统输出打印LN(i);
}   
}
}

您不应该将数字与列表中的下一个数字进行比较,您应该对每个数字在新数组中进行迭代。如果数字已经存在,请不要添加它,否则,请添加它。调试代码,您就会看到问题。强烈建议您这样做,因为您可以更好地了解代码流。调试器将改变您的生活…但是为什么..我从我的一位同行那里得到了这个建议..但我无法理解..我应该使用j=i+1?@user3499450,因为你在上一次迭代中也覆盖了i.OP想要打印副本。这是打印unique。