提示用户输入的一个长度8位正整数数字 , 我们来统计这个数字中的每一位上出现的数字的重复次数 :
例如: 11223344
里面出现了两个1 , 两个2 两个3 两个4
如何取出每一位的数字: int a = 11223344
个位数: a%10; a = a/10;
十位数: a%10; a = a/10;
百位数: a%10; a = a/10;
千位数: a%10;
import java.util.Scanner;
public class Demo1{
public static void main(String[] args){
System.out.println("请输入一个小于21亿的数字:");
Scanner input = new Scanner(System.in);
//用户输入的数字 1 1 2 2
int number = input.nextInt();
int[] arr = new int[10];
int maxIndex = 0;
for(int i=0;;i++){
arr[i] = number%10;
number /= 10;
if(number==0){
//当循环准备退出时, 将当前存储的下标(也就是最大有效数据下标存储到这个变量maxIndex上)
maxIndex = i;
break;
}
}
//--------------------
for(int i=0;i<=maxIndex;i++){
System.out.print(arr[i]+" , ");
}
//----------------------------
//1. 存储位数上的数字 (保证不重复)
int[] arr2 = new int[arr.length];
//2. 存储与上述数组对应的次数
int[] arr3 = new int[arr.length];
//3. arr2中存储到了哪个下标的标记
int arr2Index = 0;
for(int i=0;i<=maxIndex;i++){
/*判断arr[i],也就是当前进行比较的数字, 是否再arr2这个数组中存在*/
//用来表示下个比较的循环结果, 如果循环找到了相同的则表示false
boolean flag = true;
for(int j=0;j<arr2Index;j++){
if(arr[i]==arr2[j]){
flag = false;
}
}
//---------------------------------------
if(flag){
//表示从未比较过此数字
arr2[arr2Index] = arr[i];
arr3[arr2Index] = 1;
arr2Index++;
for(int j=i;j<arr.length-1;j++){
if(arr[i]==arr[j+1]){
//如果相同表示i坐标存在相同的数字
arr3[arr2Index-1]+=1;
//System.out.println("寻找到一个相同的:"+arr[i]);
}
}
}else{
//表示这个数字 再arr2数组中存在, 无需再进行比较
}
}
System.out.println();
for(int i=0;i<arr2Index;i++){
System.out.print("数字:"+arr2[i]+"出现了"+arr3[i]+"次,");
}
}
}