问答详情
源自:4-15 编程练习

这个代码看不懂 求详细解释 划线那段什么意思


if (num >= 0  && num<=999999999){
while(num != 0){
count++;
num/=10;

}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}

提问者:阮能睡 2016-07-08 21:08

个回答

  • 木刻雪原
    2016-07-09 18:25:57

    if (num >= 0  && num<=999999999){        //首先通过if(...){...}else{...}分开两种情况
            while(num != 0){                                   //第一种情况下,如果num不等于0,执行代码

                //已经判定过num在0-999999999之间,又不等于0,那么肯定至少是1位数,所以上来先加1

                count++;            

                //十进制数,除以10以后少一位,例如999除以10变成99.9,又因为是int型,所以结果是99

                num/=10;

                //得数(99)是否不等于零,true,再次循环
            }
            System.out.println("它是个"+ count+"位的数!");
    } else{
        System.out.println("输入有误!");
    }

    重点分析:

    count++;
    num/=10;

    999在规定范围内,并且不等于零,执行count++,此时count=1;

    执行num/=10;计算999/10的值,结果是99;

    99不等于零,继续循环,执行count++,值为2;

    执行num/=10;num值为9,不等于零,继续循环;

    执行count++,count值为3;

    执行num/=10,就是9/10,算出0.9,因int型所以num为0;

    判断num=0,跳出循环;

    输出 count 结果!


    小结:这其实就是一个简单的算法,也就是说满足了0-999999999,且不等于0,肯定至少是1位数,然后在利用整形除法运算,只要sum/10不等于零,说明sum还有位数,直到计算到sum/10=0为止,这样就计算到尽头了,而每计算一次,sum就少一位,那么count就加1位;


    题外话:看我这么辛苦,求采纳吧!!!

  • 小白t
    2016-07-08 21:23:47

    count=count+1;
    num=num/10;