在Java中重复数字数组中的数字

时间:2015-04-20 11:33:46

标签: java arrays

这是我的代码,它创建一个包含45个元素的数组,并在每个元素中分配随机数 如何使用(For,while和if)

计算所有数字的重复次数
    // Create an array with 45 elements
    int scores[] = new int[45];
    // Create a random object
    Random r = new Random();

    // Generate random values for each element of the array
    for(int ii=0; ii<scores.length; ii++){
        scores[ii] = r.nextInt(20);
    }

    // Print value of all numbers of the array
    for(int ii=0; ii<scores.length; ii++){
        System.out.println(scores[ii]);
    }

我添加了这个重复数字的代码

    int times[] = new int[scores.length];

    for(int i=0; i<scores.length; i++){
        int number = scores[i];
        for(int ii=0; ii<scores.length; ii++){
            if(number == scores[ii]){
                times[i]++;

            }
        }     
    }
    for(int ii=0; ii<scores.length; ii++){

        System.out.println("The number " + scores[ii] + " is repeted " + times[ii] + " times");
    }

但它显示我这样 数字2重复4次

数字2重复4次

数字4重复1次

数字6重复2次

数字6重复2次

数字2重复4次

数字3重复1次

数字5重复1次

数字1重复1次

数字2重复4次

我希望看到每次重复一次

3 个答案:

答案 0 :(得分:4)

看看叫做分组(binning)的东西。

它需要使用另一个数组,其中索引变为数字,值变为这些数字的计数。

答案 1 :(得分:-1)

您还没有说明您希望如何存储这些数据,但是这里的一些代码会将int数组中出现的每个数字存储到哈希映射中,并且根据保留的事件分别迭代每个位置。

Map<Integer, Integer> numOccurence = new HashMap<Integer, Integer>();
for (int i = 0; i < hand.length; i++) {
    int cnt = 1;
    if (numOccurence.containsKey(hand[i])) {
        cnt = numOccurence.get(hand[i]);
        cnt++;
    }
    numOccurence.put(hand[i], cnt);
}

答案 2 :(得分:-1)

public static void main(String[] args) {
        // Create an array with 45 elements
        int scores[] = new int[45];
        // Create a random object
        Random r = new Random();

        // Generate random values for each element of the array
        for (int ii = 0; ii < scores.length; ii++) {
            scores[ii] = r.nextInt(20);
        }

        // Print value of all numbers of the array
        for (int ii = 0; ii < scores.length; ii++) {
            System.out.println(scores[ii]);
        }

        Map<String, Integer> mp = new HashMap<String, Integer>();
        for (int score : scores) {
            if (mp.keySet().contains(score + "")) {
                mp.put(score + "", mp.get(score + "") + 1);
            } else {
                mp.put(score + "", 1);
            }
        }
        System.out.println("response=" + mp);
    }