為什么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("這個數是" + count + "位數");
}
}
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 + "位數");
}
}
2017-08-17
舉報
2017-08-17
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,否則就變成了死循環了。
2017-08-17
當用num>1時,
因為你的num是999,首位數是9,在循環2次后結果是9,仍然大于1,所以還會繼續循環,最終循環3次,返回正確結果。
如果換成首位數是1的比如num=100就會出錯了,循環2次后結果是1,1不大于1,不滿足循環條件,退出循環,最終循環2次,返回結果是2位數,錯誤。
大于0是正確的。