我需要一个数组来打印所有数字并计算它们的出现次数

时间:2015-04-19 17:10:57

标签: java arrays count

我有一个数字(2,2,2,2,4,5,9,9,11,11,12)的数组,我需要控制台打印出最小和最大之间的所有数字并计算它们的发生。即。数字2出现4次,数字3出现0次,数字4出现1次。

我有半工作但印刷太多了。我理解为什么但不知道如何以另一种方式做到这一点。

    int min = 2;
    int max = 12;
    int m=0;


    for(int i=min;i<=max;i++){
        for(int j=0;j<y.length;j++){
            if(y[j]==i){
                m+=1;
            }
            else{
                if(m>=1){
                    System.out.println(i+" "+m);
                    m=0;
                    break;
                }
                System.out.println(i+" "+m);

            }
        }
    }

3 个答案:

答案 0 :(得分:1)

我将尝试解释自己,对于每个最小值和最大值之间的数字,扫描&#34;数组,如果找到数字,则向计数器添加1。 在&#34;扫描&#34;完成打印计数器,重置计数器并继续到最小值和最大值之间的下一个值

我相信这是你试图做的事情:

int min = 2;
    int max = 12;
    int m = 0;
    int y[] = { 2, 2, 2, 2, 4, 5, 9, 9, 11, 11, 12 };
    for (int i = min; i <= max; i++) {
        for (int j = 0; j < y.length; j++) {
            if (y[j] == i) 
                m += 1;


            }
        System.out.println(i + " " + m);
        m=0;
        }
    }

答案 1 :(得分:0)

ArrayList<Integer> occurrence = new ArrayList<Integer>();
for (int i = 0; i < myarray.legnth; i++) {
    int a = 0;
    for (int j = 0; j < max; j++) {
        if (myarray[i] == j) {
            a++;
        }
    }
    occurrence.add(a);
}

此事件列表现在包含事件;试一试。

答案 2 :(得分:-1)

在Java8中有一个简单的解决方案,即使它可能不是最好的,但在性能方面:

Arrays.stream(array)
      .collect(Collectors.groupingBy(s -> s))
      .forEach((k, v) -> System.out.println(k+" "+v.size()));