if (num >= 0 && num<=999999999){
while(num != 0){
count++;
num/=10;
}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}
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位;
题外话:看我这么辛苦,求采纳吧!!!
count=count+1; num=num/10;