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

没搞懂这个例子的意思 如果输入999,一直除10永远也不等于0啊 为什么会结束循环呢

int num = 999;
int count = 0;
while(num!=0){
    count++;
    num/=10;
}

比如输入999 也除不尽啊 永远也不等于0 不是永远也不会结束循环    

正在回答

2 回答

Java中的“/”符号表示除法,得出的结果只能是整数部分。

第一次循环:999 / 10 --> 90,num就变为了90,

                    数学中应该是 999 除以 10 = 90……99,Java中的除法符号只取整数部位90,余数的99不做考虑;

第二次循环:90 / 10 --> 9,num变为了9;

                数学中应该是  90 除以 10 = 9,取整数部分就是9了;

第三次循环:9 / 10 -->0,num变为了0,

                数学中应该是 9 除以 10 = 0……9,取整数部分0,余数的9不做考虑。

综上,第三次循环结束后,num就变为了0,count也变为了3,

在进行第四次循环的条件判断是发现num不符合条件,循环结束。

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

慕移动7208282 提问者

你这个第一句不太对吧: Java中的“/”符号表示除法,得出的结果只能是整数部分。我百度出来的: 是因为前边给定了sum 为int类型, 所以除出来的都是整数。
2017-09-27 回复 有任何疑惑可以回复我~
#2

鲲鹏_斯坦森 回复 慕移动7208282 提问者

额。。。确实是,这里马虎了,“/”只是做完整除法。 第一次循环:999 / 10 --> 99.9,取整数部分,num就变为了99, 第二次循环:99 / 10 --> 9.9,取整数部分,num变为了9; 第三次循环:9 / 10 -->0.9,取整数部分,num变为了0, 综上,第三次循环结束后,num就变为了0,count也变为了3。 感谢兄台指出在下不准确的地方,一起学习了。
2017-09-28 回复 有任何疑惑可以回复我~

只取整数部分. 如 23/10 ,结果为2

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

举报

0/150
提交
取消

没搞懂这个例子的意思 如果输入999,一直除10永远也不等于0啊 为什么会结束循环呢

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