繁体   English   中英

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

[英]counting integers in an array and store the count in another

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

该代码对整数的出现进行计数,但是继续对其余不同整数进行计数,而不会剩余该计数。 该代码仅存储第一个整数出现的计数,没有问题。

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

如何改善代码以查找每个整数出现的整数?

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]);
    }
}

如果您知道 k最大的元素是什么(假设为100),则可以线性求解:

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

在这里,你会增加的价值i的个元素k当从当前处理的元素k具有的价值i

否则,如果您不知道k的最大可能元素(并且分别不知道如何初始化t数组),则可以使用Map

Map<Integer, Integer> map = new TreeMap<>();
for (int i : k) {
   if (map.containsKey(i)) {
      int value = map.get(i);
      map.put(i, ++value);
   } else {
      map.put(i, 1);
   }
}

for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    int i = entry.getKey();
    int n = entry.getValue();
    System.out.println("The number " + i + " was found " + n + " times.");
}

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

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM