程序员

学习笔记08_java打印1~n之间的包含7的所有整数(n为任意整数)

一、分析

  • 键盘录入一个整数num,遍历1~num所有的数,再遍历每个数的各位上的数是否等于7;
  • i / 1 % 10 ==7 判断个位数是否等于7;
  • i / 10 % 10 == 7 判断十位数是否等于7;
  • i / 100 % 10 == 7 判断百位数是否等于7;
    ··· ···
  • 以此类推,遍历个位到最高位,如果遇到等于7的停止遍历更高位,跳入下一个数遍历;
  • 每十个数换行

    import java.util.Scanner;
    public class AllSeven {
      public static void main(String[] args) {
          Scanner sc = new Scanner(System.in);
          int num = sc.nextInt();//录入范围
          if (num < 1) {
              System.out.println("录入数据错误!");
          }
          sevenPrint(num);//调用sevenPrint()方法
      }
    
      public static void sevenPrint(int num) {
          int count = 0;//定义一个计数器
          for (int i = 1 ; i <= num ; i ++) {//遍历所有范围内的数
              for (int j = 0 ; j <= Math.log10(i) ; j ++ ) {//遍历数的各位数字
                  if (i / (int)(Math.pow(10,j)) % 10 == 7) {//判断各位数是否等于7,其中Math.pow(10,j)返回double类型
                      System.out.print(i + " ");//如果true,打印出这个数
                      count ++;//计数器加一
                      if ((count + 11) % 10 ==0) {//每十个数换行(不加11,第一个数就换行了)
                          System.out.println();
                      }
                      break;//从个位开始遇到7就停止遍历更高位
                  }
              }
          }
      }
    }