黑马程序员技术交流社区

标题: 关于打印1~100不含7的数 [打印本页]

作者: 伟大的骗子    时间: 2015-6-19 12:01
标题: 关于打印1~100不含7的数
关于这个1~100不含7,小伙伴们大家都是怎么玩的啊

  1. public class NuDemo {

  2. //打印1到100内的整数,并7的跳过
  3. static void prInt(){
  4. //定义此变量用来计数,便于整理打印格式
  5. int a = 0;
  6. //for循环+if判断打印
  7. for(int x = 1;x <= 100;x++){
  8. //筛选数字大于0
  9. if(x>0 & x != 7){
  10. //筛选0到100之间的所有两位数
  11. if(x<100 & x/10 != 7 & x%10 != 7 ){
  12. a++;
  13. a = prFun(x,a);
  14. }
  15. //筛选所有三位数//这里不要看好多余,不过好处就是最大可以支持扩展到三位数及999啦,只要把上面for改掉,嘛虽然也没人么*用吧~
  16. else if(x >= 100 & x%100!=7 & x/100!=7 & x/10%10!=100 ){
  17. a++;
  18. a = prFun(x,a);
  19. }
  20. }

  21. }
  22. }
  23. //输出用函数
  24. static int prFun(int x,int a){
  25. System.out.print(x+"\t");
  26. if(a == 9){
  27. System.out.println();
  28. a = 0;
  29. }
  30. return a;
  31. }

  32. }
复制代码

嘛,后边那个prFun纯粹是用来方便整理打印格式的,完全没什么*用
那么问题来了,好麻烦啊,这东西,大约能直接调用一个系统函数传个参就搞定了?

作者: 曲终烟尽    时间: 2015-6-19 12:08
本帖最后由 曲终烟尽 于 2015-6-19 12:09 编辑

java> for(i=0;i<100;i++){
    | if((i/10)==7 || (i%10)==7)
    | System.out.println(i);
    | }
7
17
27
37
47
57
67
70
71
72
73
74
75
76
77
78
79
87
97

作者: 伟大的骗子    时间: 2015-6-19 12:10
曲终烟尽 发表于 2015-6-19 12:08
java> for(i=0;i

嗯~啊,嗯,没有70~79
作者: 曲终烟尽    时间: 2015-6-19 12:17
class Test7
{
        public static void main(String[] args)
        {
                String s="";
                for(int i=0;i<1000;i++)
                {
                        s=String.valueOf(i);
                        if(s.indexOf("7")!=-1)
                                System.out.println(s);
                }
        }
}
作者: 曲终烟尽    时间: 2015-6-19 12:19
所有带7的,一个不差,像这种问题就是查字符,把它转成字符串就简单了。非要当作整数来处理的话比较麻烦,有一个方法,对每一个数你不停的除10,并且求余数,发现有7就找到了。,直到除的结果等于0就不循环了。
作者: 曲终烟尽    时间: 2015-6-19 12:21
伟大的骗子 发表于 2015-6-19 12:10
嗯~啊,嗯,没有70~79

我改了,加上了 || 会判断除的结果,输出我没改。
作者: 曲终烟尽    时间: 2015-6-19 12:28
本帖最后由 曲终烟尽 于 2015-6-19 13:00 编辑
  1. class Test7
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 func2();
  6.         }
  7.         public static void func2()//对整数操作得到所有含7的数字
  8.         {
  9.                 for(int i=0,j=0,tmp=0;i<1000;i++)
  10.                 {
  11.                         tmp=i;
  12.                         while(tmp!=0)
  13.                         {
  14.                                 j=tmp%10;
  15.                                 if(j==7)
  16.                                 {
  17.                                         System.out.println(i);
  18.                                         break;
  19.                                 }
  20.                                 tmp=tmp/10;
  21.                         }
  22.                 }
  23.         }
  24.         public static void func1()//对字符串操作得到所有含7的字符串
  25.         {
  26.                 String s="";
  27.                 for(int i=0;i<1000;i++)
  28.                 {
  29.                         s=String.valueOf(i);
  30.                         if(s.indexOf("7")!=-1)
  31.                                 System.out.println(s);
  32.                 }
  33.         }
  34. }
复制代码


作者: 洪伟    时间: 2015-6-19 12:33
  1. public class Test5 {
  2.      public static void main(String[] args){
  3.              for(int i = 1;i<=100;i++){
  4.                              if(i/10 != 7)//去除十位为7
  5.                                      if(i%10 != 7)//去除各位为7
  6.                                              System.out.println(i);
  7.              }
  8.      }
  9. }
复制代码

作者: 张安哲    时间: 2015-6-19 12:36
        for (int x = 1; x <= 100; x++) {
                        if ((x % 10) != 7 && (x / 10) != 7) {
                                System.out.println(x);
                        }
                }


不知符不符合要求
作者: Happe_Sun    时间: 2015-6-19 20:40
谢谢分享!!!
作者: xu521cheng    时间: 2015-6-23 23:26
很不错啊,就是看不懂。就因为是基础班的原因么
作者: JJJD    时间: 2015-6-24 00:00
学习了。。。。
作者: 银哥    时间: 2015-6-24 09:31
学习一下
作者: limingdada    时间: 2015-6-24 09:34
学习了  用字符串的方式看来非常省事啊




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