要求:统计一个整数中出现最多的数字。如果数字个数一样,则以最大的数字为准,例如1输出1,121输出1,23231输出3。
int m = 1232312;
int[] n = new int[10]; //存储拆分后的数字
int num = 0; //存储拆分出的数字个数
while(m != 0){ //未拆分完
n[num] = m % 10; //获得个位数字
num++; //拆分出的数字个数加1
m /= 10; //去掉拆分出的数字
}
int[] count = new int[10]; //存储0-9数字出现的次数
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
}
//获得最大值的下标
int index = 0;
for(int i = 0;i < count.length;i++){
if(count[index] <= count[i]){
index = i;
}
}
//输出
System.out.println(index);
int m = 1232312;
int[] n = new int[10]; //存储拆分后的数字
int num = 0; //存储拆分出的数字个数
while(m != 0){ //未拆分完
n[num] = m % 10; //获得个位数字
num++; //拆分出的数字个数加1
m /= 10; //去掉拆分出的数字
}
int[] count = new int[10]; //存储0-9数字出现的次数
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
}
//获得最大值的下标
int index = 0;
for(int i = 0;i < count.length;i++){
if(count[index] <= count[i]){
index = i;
}
}
//输出
System.out.println(index);
count[n[i]]++;
}//n 存放 1,2,3,2,3,1,2//count 存储0-9数字出现的次数//这段的目的就是遍历数组 n,将数字出现的次数累加到 count 数组相应的位置
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
}
/*
这个循环是遍历n[]数组,num是数组长度,看一看数组n[]中各个数字各出现几次,count[]数组就是用来存储n[]中各个数字各出现几次的,count[]大小为10,下标从0至9,正好对应0至9这10个数字,也就是说count[0]的值表示0在n[]中出现的次数,count[1]的值表示1在n[]中出现的次数......以此类推。而n[i]表示下标为i的n[]数组元素值,例如对于本程序来说n[1],n[3],n[6]的值都为2,当i为1,3,6时count[n[i]]++即分别为count[n[1]]++(count[2]++),count[n[3]]++(count[2]++),count[n[6]]++(count[2]++),count的初值为0,这样自加下来完毕后count[2]的值为3,即数字2在n[]中出现的次数。
*/
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
} //这个循环是遍历n[]数组,num是数组长度,看一看数组n[]中各个数字各出现几次,count[]数组就是用来存储n[]中各个数字各出现几次的,
//count[]大小为10,下标从0至9,正好对应0至9这10个数字,也就是说count[0]的值表示0在n[]中出现的次数,count[1]的值表示1在n[]中出现的次
//数......以此类推。而n[i]表示下标为i的n[]数组元素值,例如对于本程序来说n[1],n[3],n[6]的值都为2,当i为1,3,6时count[n[i]]++即分别
//为count[n[1]]++(count[2]++),count[n[3]]++(count[2]++),count[n[6]]++(count[2]++),count的初值为0,这样自加下来完毕后count[2]
//的值为3,即数字2在n[]中出现的次数。格式不好,重排。
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
} //这个循环是遍历n[]数组,num是数组长度,看一看数组n[]中各个数字各出现几次,count[]数组就是用来存储n[]中各个数字各出现几次的,
//count[]大小为10,下标从0至9,正好对应0至9这10个数字,也就是说count[0]的值表示0在n[]中出现的次数,count[1]的值表示1在n[]中出现的次
//数......以此类推。而n[i]表示下标为i的n[]数组元素值,例如对于本程序来说n[1],n[3],n[6]的值都为2,当i为1,3,6时count[n[i]]++即分别
//为count[n[1]]++(count[2]++),count[n[3]]++(count[2]++),count[n[6]]++(count[2]++),count的初值为0,这样自加下来完毕后count[2]
//的值为3,即数字2在n[]中出现的次数。格式不好,重排。
Java code
//统计数字出现的次数
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
} //这个循环是遍历n[]数组,num是数组长度,看一看数组n[]中各个数字各出现几次,count[]数组就是用来存储n[]中各个数字各出现几次的,
//count[]大小为10,下标从0至9,正好对应0至9这10个数字,也就是说count[0]的值表示0在n[]中出现的次数,count[1]的值表示1在n[]中出现的次
//数......以此类推。而n[i]表示下标为i的n[]数组元素值,例如对于本程序来说n[1],n[3],n[6]的值都为2,当i为1,3,6时count[n[i]]++即分别
//为count[n[1]]++(count[2]++),count[n[3]]++(count[2]++),count[n[6]]++(count[2]++),count的初值为0,这样自加下来完毕后count[2]
//的值为3,即数字2在n[]中出现的次数。格式不好,重排。
[/code]
for(int i = 0;i < num;i++){ //这个for循环看不懂
count[n[i]]++;
}
在这个程序中,先把m的每一位拆分到一个数组里面n[]里面,之后再创建一个数组count[]统计数字出现的个数。如果1出现了两次,那count[1]=2。所以假设在数组n[]里面有n[1]=3,n[5]=3,那个你不懂的循环就会如下执行:
count[n[1]]++ -> count[3]++
count[n[5]]++ -> count[3]++
这样count[3]就纪录了数字3出现的资料。