我正在尝试计算数组的整数并将这些整数的计数存储在另一个数组中.
代码计算整数的出现次数,但继续计算不同整数的其余部分而不用计数.代码仅存储第一个整数出现的计数而没有问题.
我的问题是,当循环到达下一个整数时,计数不会重置,并继续从最后的整数计数开始计数并显示它.
如何改进我的代码以查找每个整数的整数出现?
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]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您知道最大可能元素是什么k(假设为100),那么您可以线性地解决它:
int[] t = new int[101]; //subject of change
for (int i : k) {
t[i]++;
}
Run Code Online (Sandbox Code Playgroud)
在这里,您将增加当前处理的元素的值为i-th元素的值.kki
否则,如果你不知道最大可能的元素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.");
}
Run Code Online (Sandbox Code Playgroud)