计算数组中的整数并将计数存储在另一个数组中

时间:2015-10-14 12:03:46

标签: java arrays

我试图计算数组的整数并将这些整数的计数存储在另一个数组中。

代码计算整数的出现次数,但继续计算不同整数的其余部分而不计算计数。代码只存储第一个整数的计数而没有问题。

我的问题是,当循环到达下一个整数并且继续从最后的整数计数开始计数并且显示时,计数不会重置。

如何改进代码以查找每个整数的整数?

public count() {
    int k[] = {1,1,2,2};
    int t[] = {0,0,0,0,0};
    int count = 0;
    System.out.println("reset count: "+count);

    for (int f = 0; f<k.length; f++) {
        for (int i =1; i < k.length-1; i++) {
            for (int g = 0; g < t.length; g++ ) {
                if (k[f] == i) {
                    count++;
                    System.out.println("Integer = "+i);
                    System.out.println("count: "+count);
                    t[g] = count;
                }
                i++;
            }
        }
    }
    System.out.println();
    for (int o = 0; o < t.length; o++) {
        System.out.println("Stored int counts t" + o + " = " + t[o]);
    }
}

2 个答案:

答案 0 :(得分:5)

如果你知道 k中最大的元素是什么(假设为100),那么你可以线性地解决它:

int[] t = new int[101]; //subject of change
for (int i : k) {
   t[i]++;
}

此处,当i中当前处理的元素的值为k时,您将增加k元素i的值。

否则,如果您不知道k的最大可能元素(并且您将不知道如何初始化t数组),则可以使用{{1} }:

Map

答案 1 :(得分:0)

您可以使用HashMap将唯一值保存为键,并在迭代中检查该键是否已存在,如果确实存在则增加其值,否则继续。

希望这会有所帮助。