黑马程序员技术交流社区

标题: 为什么输出结果是三个0? [打印本页]

作者: 马欢    时间: 2012-2-16 11:06
标题: 为什么输出结果是三个0?
本帖最后由 马欢 于 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);
                     
                        }
                       
                               
                }

}
作者: 刘基军    时间: 2012-2-16 11:52
while循环结束n=0,所以n/h,n%h,m和n的结果都是0
作者: 王美霞    时间: 2012-2-16 11:54
因为在执行完while循环以后,n的值已经变为0,sum为3,再执行for循环以后都是0在参加运算,所以循环三次m的值都为0
作者: 陈丹阳    时间: 2012-2-16 12:02
  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.         }
复制代码





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