文章目录
输入两个数字(如12、78),计算两个数字之间 0-9 数字出现的次数
题目的意思是,要把12和78之间出现的数,拆分成0-9,然后统计0-9出现的次数
12和78之间有,13,14,15,16,17……75,76,77。然后把每个数拆开,统计0到9出现的次数例如,13,1出现1次,3出现一次,到14的时候,1出现2次,3出现1次,4出现1次,以此类推最后统计0-9一共出现的次数
一、解题思路
第一步 我们首先要考虑两个数之间一共有几个数,例如:1-4之间有2个数,2和3,
3-9之间有4,5,6,7,8五个数 ,以此我们得到一个公式,a-b-1得到的结果就是有几个数,4-1-1=2
9-3-1=5
第二步拆分之间出现的每一个数,13要拆成1和3,133拆成1和3和3,6789要拆成6,7,8,9,这个要怎么做呢,我们要怎么统计每个数是几位数呢?从而拆分在统计0-9的次数呢?
二、计算两个数之间有多少个数
1.利用公式,a-b-1=两个数之间的个数
想要判断2个数那个数更大,就放在前面作为被减数
代码如下(示例):
if (one > two) {
int demp = one;
one = two;
two = demp;
}
//a,b中间有几个数
int demp = two - one - 1;//例如,1和3中间只有一个数2,所以减一
2.创建一个用来存放0-9出现次数的数组,长度为10
数组的索引0的位置用来存放0出现的次数
索引1的位置用来存放1出现的次数,以此类推
数组最后一位索引9,用来存放9出现的次数
代码如下(示例):
int[] countArray = new int[10];//用来存储0-9的次数
3.for循环,提取2个数之间出现的数
代码如下(示例):
for (int i = 1; i <= demp; i++) { //demp是2个数之间一共有几位数
int three = one + i; //13=12+1;14=12+2’;
}
3.在for循环里嵌套for,来拆分每个数并统计在0-9的数组里面
代码如下(示例):
for (int i = 1; i <= demp; i++) { //demp是2个数之间一共有几位数
int three = one + i; //13=12+1;14=12+2’;
String s = String.valueOf(three);//由于数是int,我们要转为String类型的,方便拆分
for (int a = 0; a < s.length(); a++) { //用来拆分每位数
//countArray索引0是用来存储 0 出现的次数.
String s1 = String.valueOf(s.charAt(a)); //char提取每个位数转为Sting类型的
countArray[Integer.parseInt(s1)] = countArray[Integer.parseInt(s1)] + 1;
}
}
int不能直接拆分出每个数,所以 我们要利用String的charAt( )方法,所以我们先要转为String,然后在使用charAt()方法提出每个字符char,char不能直接转为int,所以char转为String,然后String转为int,最后存到0-9的数组里面
完整代码
public class Task1217_4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = sc.nextInt();
System.out.println("请输入第二个数:");
int b = sc.nextInt();
count(a, b);
}
//循环计算0-9出现的次数
public static void count(int one, int two) {
int[] countArray = new int[10];//用来存储0-9的次数
//判断第一个数是否大于第二个数,大于互换位置
if (one > two) {
int demp = one;
one = two;
two = demp;
}
//a,b中间有几个数
int demp = two - one - 1;//例如,1和3中间只有一个数2,所以减一
for (int i = 1; i <= demp; i++) {
int three = one + i;
String s = String.valueOf(three);
for (int a = 0; a < s.length(); a++) {
//countArray索引0是用来存储 0 出现的次数.
String s1 = String.valueOf(s.charAt(a));
countArray[Integer.parseInt(s1)] = countArray[Integer.parseInt(s1)] + 1;
}
}
for (int i = 0; i < countArray.length; i++) {
System.out.println(i + "出现的次数:" + countArray[i]);
}
}
}