Java的有关编程解决666

小明非常不喜欢包含2的数字,例如2,12,22,21等等。不包含2的
数字小明认为是洁净数,编程统计1-10000之间有多少个洁净数。


import java.util.Scanner;
public class 洁净数 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();

        int count = 0;
        for (int i = 1; i <= n; i++) {
            char[] array = String.valueOf(i).toCharArray();
            int flag = 1;

            for (char j : array) {
                if (j == '2') {
                    flag = 0;
                    break;
                }
            }
            if (flag == 1) {
                count++;
            }
        }
        System.out.println(count);
    }
}


    public static void main(String[] args) {
        int count = 0;
        for (int i = 1; i <= 1000; i++) {
            if(String.valueOf(i).contains("2")){
                count ++;
            }
        }
        System.out.println(count);
    }
 
    public static void main(String[] args) {
        int n = 10000;
        //n的位数 
        int length = String.valueOf(n).length();
        int count = (int)Matn.pow(9,length-1);
      
        System.out.println("洁净数: "+count);
    }

想不出太好,写了个一般的:

int n = 10000;
        int has2Cnt = 0;
        Set<Integer> set = new HashSet<>();
        //结尾是2,或者除以10以后属于不洁,那这个数字不洁
        for(int i = 1; i <= n; i++){
            if(set.contains(i/10) || i%10==2){
                has2Cnt ++;
                set.add(i);
            }
        }
        System.out.println(n-has2Cnt);

谢谢采纳,关注一波多多支持!