这是我的代码,它创建一个包含45个元素的数组,并在每个元素中分配随机数 如何使用(For,while和if)
计算所有数字的重复次数 // Create an array with 45 elements
int scores[] = new int[45];
// Create a random object
Random r = new Random();
// Generate random values for each element of the array
for(int ii=0; ii<scores.length; ii++){
scores[ii] = r.nextInt(20);
}
// Print value of all numbers of the array
for(int ii=0; ii<scores.length; ii++){
System.out.println(scores[ii]);
}
我添加了这个重复数字的代码
int times[] = new int[scores.length];
for(int i=0; i<scores.length; i++){
int number = scores[i];
for(int ii=0; ii<scores.length; ii++){
if(number == scores[ii]){
times[i]++;
}
}
}
for(int ii=0; ii<scores.length; ii++){
System.out.println("The number " + scores[ii] + " is repeted " + times[ii] + " times");
}
但它显示我这样 数字2重复4次
数字2重复4次
数字4重复1次
数字6重复2次
数字6重复2次
数字2重复4次
数字3重复1次
数字5重复1次
数字1重复1次
数字2重复4次
我希望看到每次重复一次
答案 0 :(得分:4)
看看叫做分组(binning)的东西。
它需要使用另一个数组,其中索引变为数字,值变为这些数字的计数。
答案 1 :(得分:-1)
您还没有说明您希望如何存储这些数据,但是这里的一些代码会将int数组中出现的每个数字存储到哈希映射中,并且根据保留的事件分别迭代每个位置。
Map<Integer, Integer> numOccurence = new HashMap<Integer, Integer>();
for (int i = 0; i < hand.length; i++) {
int cnt = 1;
if (numOccurence.containsKey(hand[i])) {
cnt = numOccurence.get(hand[i]);
cnt++;
}
numOccurence.put(hand[i], cnt);
}
答案 2 :(得分:-1)
public static void main(String[] args) {
// Create an array with 45 elements
int scores[] = new int[45];
// Create a random object
Random r = new Random();
// Generate random values for each element of the array
for (int ii = 0; ii < scores.length; ii++) {
scores[ii] = r.nextInt(20);
}
// Print value of all numbers of the array
for (int ii = 0; ii < scores.length; ii++) {
System.out.println(scores[ii]);
}
Map<String, Integer> mp = new HashMap<String, Integer>();
for (int score : scores) {
if (mp.keySet().contains(score + "")) {
mp.put(score + "", mp.get(score + "") + 1);
} else {
mp.put(score + "", 1);
}
}
System.out.println("response=" + mp);
}