黑马程序员技术交流社区

标题: 这道题有点难啊,求解啊 [打印本页]

作者: cb747706401    时间: 2016-7-1 23:43
标题: 这道题有点难啊,求解啊
用代码实现
        (1)打印1到100之内的整数,但数字中包含9的要跳过
        (2)每行输出5个满足条件的数,之间用空格分隔
        (3)如:1 2 3 4 5

作者: 代码是什么    时间: 2016-7-1 23:51
public static void main(String[] args) {
                        PrintNum (100);                //调用PrintNum方法,打印1到100之间所有数字中不包含9的整数
                }
               
                /**
                *打印1到任意传入值之间所有数字中不包含9的整数
                */
                public static void PrintNum(int num) {
                        int count = 0;                                                        //定义一个记数器
       
         outer: for (int i = 1; i <= num; i++) {                        //外循环标号为 outer
                                for (int k = 1; k <= i; k *= 10) {        //k=1,10,100,1000,1000...
                                        if ((i / k) % 10 == 9)                         //对比 i 的每一个位,如果有值等于 9 则结束本次外循环,排除i的当前值
                                                continue outer;                       
                                }        //内循环结束                                               
                                System.out.print(i + "\t");                        //如果 i 中没有 9,则输出语句 i 的值,计数器自增
                               
                                count++;                                                        //计数器自增1
                                if (count % 5 == 0)                                                       
                                        System.out.println();                        //当计数器值 %5 == 0 的时候,换行(打印了5个值)               
                        }         //外循环结束
                        System.out.println("\n 从1到" + a +"之内不包含9的数共有:" + count + "个");
                }
        }
以前的将就看吧
作者: huizhong    时间: 2016-7-2 00:48
代码是什么 发表于 2016-7-1 23:51
public static void main(String[] args) {
                        PrintNum (100);                //调用PrintNum方法,打印1到100之间所有 ...

for (int k = 1; k <= i; k *= 10) {        //k=1,10,100,1000,1000...
                                        if ((i / k) % 10 == 9)      
这里K不*10应该也是可以的吧
作者: 漏船载酒    时间: 2016-7-2 02:07
public class Demo12 {
        public static void main(String[] args) {
                int count = 0;                                                                           // 定义计数器;
                for (int i = 1; i < 101; i++) {                            // 遍历1到100之内的整数;
                        if (i % 10 != 9 && i / 10 != 9)                   // 如果个位和十位上的都不等于9;
                                System.out.print(i + "\t");                    // 打印该输,同时计数器自增;
                        count++;
                        if (count % 5 == 0) {                                                 // 计数器每达到5倍数时换行;
                                System.out.println();
                        }
                }
        }
}
if选择嵌套,满足不含9就打印,够五个就换行
作者: 漏船载酒    时间: 2016-7-2 02:12
public class Demo12 {
        public static void main(String[] args) {
                int count = 0;                                      // 定义计数器;
                for (int i = 1; i < 101; i++) {               // 遍历1到100之内的整数;
                        if (i % 10 != 9 && i / 10 != 9) {      // 如果个位和十位上的都不等于9;
                                System.out.print(i + "\t");           // 打印该输,同时计数器自增;
                                count++;
                                if (count % 5 == 0) {                  // 计数器每达到5倍数时换行;
                                        System.out.println();
                                }
                        }
                }
        }
}
上面回复的丢了一对大括号....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2