为了账号安全,请及时绑定邮箱和手机立即绑定

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


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

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

正在回答

2 回答

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位;


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

19 回复 有任何疑惑可以回复我~
count=count+1;
num=num/10;


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信