慕娘8023857
2017-08-17 11:33
public class fortest{
public static void main(String[] args) {
int num = 999;
int count = 0;
do {
count++;
num = num / 10;
}
while (num>1);
System.out.print("这个数是" + count + "位数");
}
}
do{}whhile()循环先执行一次count++,然后用999>0或999>1判断,执行第二次count++;然后用99>0或99>1判断(注意定义的是int类型,所有输出不是99.9,而是99);执行第三次count++;然后用0>0或0>1判断,不成了,跳出循环,说白了第三次9/10输出的int类型是0;所有num>0或num>1都是成立的。注意:num的类型不能改为double,否则就变成了死循环了。
当用num>1时,
因为你的num是999,首位数是9,在循环2次后结果是9,仍然大于1,所以还会继续循环,最终循环3次,返回正确结果。
如果换成首位数是1的比如num=100就会出错了,循环2次后结果是1,1不大于1,不满足循环条件,退出循环,最终循环2次,返回结果是2位数,错误。
大于0是正确的。
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题