A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /*
  2. 1,分析以下需求,并用代码实现:
  3.         (1)打印1到100之内的整数,但数字中包含9的要跳过
  4.         (2)每行输出5个满足条件的数,之间用空格分隔
  5.         (3)如:1 2 3 4 5

  6. 分析
  7. 1,取个位和十位的数判断是否含有9;
  8. 2,用for循环控制每行的个数
  9. */

  10. class Test01 {
  11.         public static void main(String[] args) {
  12.                 int count = 1;
  13.                 for (int x = 1;x <100 ;x++ ) {
  14.                        
  15.                         int ge = x%10;
  16.                         int shi = x/10%10;
  17.                         if (ge!=9 && shi !=9) {
  18.                                
  19.                                 System.out.print(x + "\t");
  20.                        
  21.                                 if (count%5 == 0) {
  22.                                         System.out.println();
  23.                                 }
  24.                                 count++;
  25.                         }
  26.                 }
  27.                 System.out.println("----------------------------------");
  28.                 //调用方法
  29.                 noNine(100);
  30.         }

  31. /*

  32. 需求:将上述题目封装成方法.

  33. 分析
  34. 1,遍历每位上的数是否含有9,取每位上的数就是除以10的(n-1)次方再%10;
  35. 2,判断是否含有9;如果不包含9并且当 10的(n-1) > num 时,说明遍历到最位数为且符合条件;
  36. 3,打印并控制每行个数;
  37. */
  38.        
  39.         public static void noNine(int num) {
  40.                 int count = 1;
  41.                 for (int i=1; i<num ;i++ ) {
  42.                         for (int j=1;;j++ ) {                                        //依次取个,十,百.....位上的数
  43.                                 if (i/(fang10(j-1))%10 == 9) {                //含有9则跳出循环判断下一个数
  44.                                         break;
  45.                                 }else if (fang10(j-1)<=num) {                //判断是否遍历到最高位
  46.                                         continue;
  47.                                 }
  48.                                 System.out.print(i + "\t");
  49.                                 if (count%5 == 0) {

  50.                                         System.out.println(j);
  51.                                 }
  52.                                 count++;
  53.                                 break;
  54.                         }
  55.                 }
  56.         }

  57.         //10的几次方的方法;
  58.         public static int fang10(int a) {
  59.                 int f = 10;
  60.                 if (a==0) {
  61.                         return 1;
  62.                 }
  63.                 for (int i=1;i<a ;i++ ) {
  64.                         f = f*10;
  65.                 }
  66.                 return f;
  67.         }

  68. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马