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

输入999,则输出“它是个3位数!”

if (num >= 0  && num<=999999999){
while(num != 0){
count++;
num/=10;
}
System.out.println("它是个"+ count+"位的数!");
} else{
System.out.println("输入有误!");
}

请教这个语法,这个原理是如何得来的,为什么我输入2位数就会输出两位数,其中count与num没有任何关联,百思不得其解,求解答。

正在回答

3 回答

最外层判断是否是十位的数字,如果是十位以内的则进行循环操作;

count++应该不用解释吧,就是每次满足条件执行循环就会加一,你应该就是不理解 num/=10;这一行。

由于是int类型,每次除完会自动取整数,以999为例:

num=999;

num/=10;    //第一次  num的值变为99

num/=10;    //第二次  num的值变为9

num/=10;    //第三次   num的值变为0 (执行完这次循环已经不能满足条件num!=0,将会跳出循环)

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

菜鸟的羽毛 提问者

例如我附加num为333,也就是 int num=333; int count=0;// 这个值不变 if (num >= 0 && num<=999999999){ while(num != 0){ count++;// 自加1 原来是0自加1就变成了1 num/=10;// 333除以10 等于33.3,省去小数点就是33 } System.out.println("它是个"+ count+"位的数!"); } //不太明白 结果明明不就是让输出count的值么,怎么就会输出的是数字3呢?
2016-04-12 回复 有任何疑惑可以回复我~
#2

菜鸟的羽毛 提问者

哦,我明白了,while 是自循环 比如我输入333,333除以10三次就会变化成0然后就跳出,自循环三次count自加3次,输出也就是3了
2016-04-12 回复 有任何疑惑可以回复我~
#3

bcp9527 回复 菜鸟的羽毛 提问者

是的,很多循环操作里都会加个count来统计有效循环的次数,再继续扩展就是当count满足某个条件时再继续执行另一块的操作,你可以自己试着传入一个大一点的数字,然后设置循环3次后就跳出循环。 多练几次就理解了。
2016-04-12 回复 有任何疑惑可以回复我~
#4

菜鸟的羽毛 提问者 回复 bcp9527

谢谢!!!
2016-04-14 回复 有任何疑惑可以回复我~
查看1条回复

num是int型变量num/10的时候只保留了整数部分舍去余数,不存在小数,所以会每除一次少一位,同时count++使得计数自加,当num=0时循环条件不满足自动退出

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

count++执行一遍,在执行num = num / 10 ,num就会少一位,刚好 

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

举报

0/150
提交
取消

输入999,则输出“它是个3位数!”

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