d12_1219
题目:
题目描述
请统计某个给定范围 [�,�][L,R] 的所有整数中,数字 22 出现的次数。
比如给定范围 [2,22][2,22],数字 22 在数 22 中出现了 11 次,在数 1212 中出现 11 次,在数 2020 中出现 11 次,在数 2121 中出现 11 次,在数 2222 中出现 22 次,所以数字 22 在该范围内一共出现了 66 次。
输入格式
22 个正整数 �L 和 �R,之间用一个空格隔开。
输出格式
数字 22 出现的次数。
输入输出样例
输入 #1复制
2 22
输出 #1复制
6
输入 #2复制
2 100
输出 #2复制
20
思路(12.19)
从输出入手,怎么得到次数
怎么得到次数:定义一个计数器,遍历范围内每一个数,依次判断每个数,有2就“ 次数++”
怎么判断每个数是否有2:对这个数,取出来每一位,并判断
注意点:如果循环中会用到并且改变循环变量的值,就用替身
例如:
改为:
完整代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输入a,b
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int c = 0;
//利用循环,从a到b,
for (int i = a; i <= b; i++) {
//因为不能改变循环变量的原值,本次循环结束以后i会变成不是本次循环的i,这个导致循环有问题
int t=i;
while (t != 0) {
if (t % 10 == 2)
c++;
t = t / 10;
}
}
System.out.println(c);
}
}