数不了。发生和显示最重复的第一个。其次是其他人。对于Eg。输入:223331544输出:32415

时间:2014-09-24 09:10:50

标签: java

Java中的程序,应该计算编号。发生和显示最重复的第一个。其次是其他人。例如。输入:223331544输出:32415

class Example {
    public static void main(String a[]) {
        int[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
        for (int i = 0; i < arr.length; i++) {
            boolean isDistinct = false;
            for (int j = 0; j < i; j++) {
                if (arr[i] == arr[j]) {
                    isDistinct = true;
                    break;
                }
            }
            if (!isDistinct) {
                System.out.print(arr[i] + " ");
            }
        }
    }
}

5 个答案:

答案 0 :(得分:2)

以下代码将打印出不同的数字:

import java.util.*;

public class Example {
    public static void main(String[] args) {
        Integer[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
        Set<Integer> s = new HashSet<Integer>(Arrays.asList(arr));
        System.out.println(s);
    }
}

但这不是答案。要求是删除多次出现的所有数字。要做到这一点,请创建一个Map,其中包含数字作为键和出现值。将数字放入Map,如果数字已存在,则+1出现。所以代码如下:

import java.util.*;

public class Test {
    public static void main(String[] args) {
        int[] arr = { 5, 2, 7, 2, 4, 7, 8, 2, 3 };
        Map<Integer, Integer> m = new HashMap<Integer, Integer>();

        for (int i : arr) {
            if (m.get(i) == null)
                m.put(i, 1);
            else
                m.put(i, m.get(i) + 1);
        }

        for (Map.Entry<Integer, Integer> e : m.entrySet()) {
            if (e.getValue() == 1)
                System.out.print(e.getKey() + " ");
        }
    }
}

答案 1 :(得分:1)

请针对您的问题尝试此解决方案。

import java.util.*;
class Hello    
{
        public static void main(String[] args)
        {
        int[] arr = {5, 2, 7, 2, 4, 7, 8, 2, 3};
Set<Integer> set = new HashSet<Integer>();

for(int i = 0; i < arr.length; i++){
  set.add(arr[i]);
}

//now if you will iterate through this set, it will contain only unique values. 
Iterator it = set.iterator();
while(it.hasNext()) {
  System.out.println(it.next());
}
        }
}

答案 2 :(得分:0)

你可以这样试试

  public static void main(String a[]) {
    int[] arr = {1,2,2,3,4,5,5};
    for (int i = 0; i < arr.length; i++) {
        boolean isDistinct = false;
        for (int j = 0; j < arr.length; j++) {
            if (arr[i] == arr[j] && i!=j) {
                isDistinct = true;
                break;
            }
        }
        if (!isDistinct) {
            System.out.print(arr[i] + " ");
        }
    }
}

Out put:

1 3 4 

答案 3 :(得分:0)

我认为Set已经可以帮助你做到这一点,高级链接。http://docs.oracle.com/javase/7/docs/api/java/util/Set.html

答案 4 :(得分:0)

使用set

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

public class NonDuplicateElement{

     public static void main(String []args){

        int[] arr = {5,2,7,2,4,7,8,2,3};
        Set<Integer>set = new HashSet<Integer>();
        Set<Integer>remset = new HashSet<Integer>();        


        for(int i=0;i<arr.length;i++)
        {
            if(set.contains(arr[i]))
            {               
                remset.add(arr[i]);
            }
            else
            {               
                set.add(arr[i]);    
            }          

        }


        Iterator<Integer> iter = remset.iterator();
        while(iter.hasNext())
        {
            Integer element = iter.next();
            if(set.contains(element))
            {
                set.remove(element);
            }
        }
        iter = set.iterator();
        while(iter.hasNext())
        {
            System.out.println(iter.next()+ "\t");
        }       

     }
}

输出 3 4 5 8