题:统计数字出现次数。 随机生成100个数字,数字范围从1到10,统计每个数字出现的次数并打印到控制台。...

 
   
public static void main(String[] args) {
printCount(getNumList());
}

private static ArrayList list;

public static ArrayList getNumList() {
list = new ArrayList();
Random r = new Random();
for (int i = 0; i < 100; i++) {
int num = r.nextInt(10) + 1;
list.add(num);
}

return list;
}
//主体方向思想,从集合中拿出一个数(遍历顺序) i=0时,下标为i的元素会和后面的所有比较,当他们相同时,会把下表为J的元素给换成0,最后遍历到末尾了
//就把下标为i的元素也给他换成0,同时count变量会+1 记录出现次数,count初始值就是1因为下标为i的时候的元素本身就是一个,
//for循环的意思如上,for循环内: 如果下标为i的元素是0,那么就跳过本次循环直接进行下一步,那么内循环里就会一直跳一直跳直到i+1,
//如果第一个if不满足,那么当下标为1 的数和下标为i+1也就是j的元素相等时,count就要++因为他找到一个和他相同的元素了,处理完把j对应的元素给改成0
//那么这样第二个if的作用也就罗列清楚了,第三个if:就是要打印输出的那一段了,说实话这个打印想起来起来还真的有些烧..., 当j迭代到最后一位数的时候
//开始打印了,也就是我们的题意所在,完了给他count初始化,因为还在循环内,这玩意我还要继续用,最后因为完美主义情结,我们把"罪魁祸首"给改成0,虽然就算不改后面也用不到
public static void printCount(ArrayList list) {
int count = 1;
int num = 0;
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i) == 0) {
continue;
}
if (list.get(i) == list.get(j)) {
count++;
num = list.get(j);
list.set(j, 0);
}
if(j==list.size()-1){
System.out.println("数字:" + num + "==" + count);
count=1;
list.set(i,0);
}
}


}

}

转载于:https://www.cnblogs.com/lyuweigh/p/9495468.html

你可能感兴趣的:(题:统计数字出现次数。 随机生成100个数字,数字范围从1到10,统计每个数字出现的次数并打印到控制台。...)