判斷一個(gè)數(shù)的位數(shù),看代碼我怎么想不通?求詳細(xì)解釋
if (num >= 0 ?&& num<=999999999){
while(num != 0){
count++;
num/=10;
}
System.out.println("它是個(gè)"+ count+"位的數(shù)!");
} else{
System.out.println("輸入有誤!");
}
我的思路:第一次假設(shè)num=1,count=0。while(1 !=0)滿足,count=1,num=1/10=0.1,輸出它是個(gè)1位數(shù)!
????????????????第二次假設(shè)num=10,count=0。while(10 !=0)滿足,count=1,num=10/10=1,輸出它是個(gè)1位數(shù)! ? 然而10卻是2位數(shù)呀??
小白剛學(xué),腦子沒有轉(zhuǎn)過來 望大神指出我哪邊錯(cuò)了 ?萬分感謝!
2016-03-06
num的值是999,count=0,所以num/10第一次得值99.9,去小數(shù)位得整數(shù)99,此時(shí)count++后得值為1;
num第二次循環(huán)時(shí)值為99,帶入執(zhí)行,num/10=9.9,去小數(shù)位得整數(shù)9,此時(shí)count++,值為2;
num第三次循環(huán)時(shí)值為9,帶入執(zhí)行,num/10=0.9,去小數(shù)位得值為0,此時(shí)count++,值為3;
進(jìn)行第四次循環(huán)時(shí),num值為0,不滿足循環(huán)條件,所以循環(huán)終止。最后得出count=3
2016-03-06
因?yàn)槟愣x的是int整形,所以
1. ?num%=10 ?是除以10后,結(jié)果的余數(shù) ,如果num小于10 ,就直接輸出這個(gè)數(shù) num。
?? 例如 : int ?num=3;num %=10 輸出是num=3
2. num/=10 ?是除以10后, 結(jié)果的整數(shù)部分 ?。
? ?例如 :int ?num=3;num/=10 輸出是num=0 ?
第一次假設(shè)num=1,count=0。while(1 !=0)滿足,count=1,num=1/10=(?0 ),不滿足num != 0,退出循環(huán),輸出它是個(gè)1位數(shù)!
第二次假設(shè)num=10,count=0。while(10 !=0)滿足,count=1,num=10/10=1,
此時(shí),num=1依然滿足條件num != 0,再運(yùn)行一次count=2,num=1/10=(?0?),不滿足num != 0,退出循環(huán),輸出它是個(gè)2位數(shù)!
2016-03-06