我正在尝试计算一个数组的整数并将这些整数的计数存储在另一个数组中。
代码计算一个整数的出现次数,但继续计算其余不同整数,而不停止计数。该代码仅存储第一个整数出现的计数,没有问题。
我的问题是,当循环到达下一个整数时,计数不会重置,并继续从最后一个整数计数开始计数并显示该值。
如何改进我的代码以查找每个整数出现的整数?
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]++;
}
在这里,当 k
中当前处理的元素值为: 我
。
否则,如果您不知道 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.");
}
关于java - 计算一个数组中的整数并将计数存储在另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124776/