為什么num>0和num>1都是可以的
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("這個數(shù)是" + count + "位數(shù)");
}
}
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("這個數(shù)是" + count + "位數(shù)");
}
}
2017-08-17
舉報
2017-08-17
do{}whhile()循環(huán)先執(zhí)行一次count++,然后用999>0或999>1判斷,執(zhí)行第二次count++;然后用99>0或99>1判斷(注意定義的是int類型,所有輸出不是99.9,而是99);執(zhí)行第三次count++;然后用0>0或0>1判斷,不成了,跳出循環(huán),說白了第三次9/10輸出的int類型是0;所有num>0或num>1都是成立的。注意:num的類型不能改為double,否則就變成了死循環(huán)了。
2017-08-17
當用num>1時,
因為你的num是999,首位數(shù)是9,在循環(huán)2次后結果是9,仍然大于1,所以還會繼續(xù)循環(huán),最終循環(huán)3次,返回正確結果。
如果換成首位數(shù)是1的比如num=100就會出錯了,循環(huán)2次后結果是1,1不大于1,不滿足循環(huán)條件,退出循環(huán),最終循環(huán)2次,返回結果是2位數(shù),錯誤。
大于0是正確的。