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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马欢 黑马帝   /  2012-2-16 11:06  /  1840 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void main(String[] args) {
  2.                 //printNum(1456);
  3.                   int n=456;
  4.           int sum =0;
  5.           int m=0,h=0;
  6.           while(n!=0){
  7.                   n /= 10;
  8.                   sum++;
  9.           }    //此时sum=3 n =0 !!!!注意 这时候n已经变了
  10.           //再赋值一次 就解决问题
  11.           //n = 456;
  12.           for(int i=sum;i>0;i--){  //执行3次           
  13.                   h=(int)Math.pow(10, i-1); //以第一次为例  计算10的平方
  14.                   m=n/h;               // 你期望的m = n/h = 456/100 = 4,此步骤出错,得到结果为0,因为此时的n为0
  15.                   n=n%h;             //  n = 456%100  = 56
  16.                   System.out.println(m);            
  17.           }
  18.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马欢 于 2012-2-16 12:11 编辑

       
                int n=456;
               
                int sum =0;
                int m=0,h=0;
                while(n!=0){
                n /= 10;
                sum++;}
              for(int i=sum;i>0;i--){
                               
                h=(int)Math.pow(10, i-1);
                               
                               
                            m=n/h;
                           
                            n=n%h;
                             
                    System.out.println(m);
                     
                        }
                       
                               
                }

}

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

3 个回复

倒序浏览
while循环结束n=0,所以n/h,n%h,m和n的结果都是0

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
因为在执行完while循环以后,n的值已经变为0,sum为3,再执行for循环以后都是0在参加运算,所以循环三次m的值都为0

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马