- /*
- 1,分析以下需求,并用代码实现:
- (1)打印1到100之内的整数,但数字中包含9的要跳过
- (2)每行输出5个满足条件的数,之间用空格分隔
- (3)如:1 2 3 4 5
- 分析
- 1,取个位和十位的数判断是否含有9;
- 2,用for循环控制每行的个数
- */
- class Test01 {
- public static void main(String[] args) {
- int count = 1;
- for (int x = 1;x <100 ;x++ ) {
-
- int ge = x%10;
- int shi = x/10%10;
- if (ge!=9 && shi !=9) {
-
- System.out.print(x + "\t");
-
- if (count%5 == 0) {
- System.out.println();
- }
- count++;
- }
- }
- System.out.println("----------------------------------");
- //调用方法
- noNine(100);
- }
- /*
- 需求:将上述题目封装成方法.
- 分析
- 1,遍历每位上的数是否含有9,取每位上的数就是除以10的(n-1)次方再%10;
- 2,判断是否含有9;如果不包含9并且当 10的(n-1) > num 时,说明遍历到最位数为且符合条件;
- 3,打印并控制每行个数;
- */
-
- public static void noNine(int num) {
- int count = 1;
- for (int i=1; i<num ;i++ ) {
- for (int j=1;;j++ ) { //依次取个,十,百.....位上的数
- if (i/(fang10(j-1))%10 == 9) { //含有9则跳出循环判断下一个数
- break;
- }else if (fang10(j-1)<=num) { //判断是否遍历到最高位
- continue;
- }
- System.out.print(i + "\t");
- if (count%5 == 0) {
- System.out.println(j);
- }
- count++;
- break;
- }
- }
- }
- //10的几次方的方法;
- public static int fang10(int a) {
- int f = 10;
- if (a==0) {
- return 1;
- }
- for (int i=1;i<a ;i++ ) {
- f = f*10;
- }
- return f;
- }
- }
复制代码 |
|