求大佬指點(diǎn)為何本代碼中關(guān)于for循環(huán)下面的if循環(huán)僅執(zhí)行了兩次?
package?imooc; public?class?HelloWorld?{ ??public?static?void?main(String[]?args){? ?? ????int?num?=?999; ?? ????for(int?count?=?1;count?>=0&&count?<=?999999999;count++){ ?? ??????if(num?/?10?==?0){ ?? ????????System.out.println("它是個(gè)"?+?count?+?"位的數(shù)!"); ?? ??????????break; ?? ??????}else{ ??? ?????????num?=?num?/?10; ?? ??????} ?? ????} ??} }
? ? ?首先我認(rèn)為代碼中if循環(huán)會(huì)執(zhí)行三次,所以我在for循環(huán)中將變量count初始化為0,三次循環(huán)后輸出“它是個(gè)3位的數(shù)!”,從而實(shí)現(xiàn)任務(wù)需求。然而實(shí)際運(yùn)行后發(fā)現(xiàn)if循環(huán)僅執(zhí)行兩次,所以我將for循環(huán)中count變量重新初始化為1方使得程序得以輸出正確結(jié)果。所以求各位大佬指點(diǎn)為何if執(zhí)行了兩次后變量num的值便滿足if循環(huán)后的判斷條件“num / 10 == 0”呢?謝謝指點(diǎn)!
2019-02-26
因?yàn)閚um=num/10會(huì)執(zhí)行兩遍,第三次num/10==0,所以會(huì)滿足if里面的判定條件,執(zhí)行輸出語(yǔ)句,如果count初始化為0的話,此時(shí)count==2,而此時(shí)會(huì)執(zhí)行if里面的break,會(huì)跳出整個(gè)循環(huán),所以count初始化必須為1,換句話說,else后面的語(yǔ)句運(yùn)行了兩次,if后面的語(yǔ)句運(yùn)行了一次,而for循環(huán)僅僅執(zhí)行兩次。
2019-02-26
難道是因?yàn)閕f對(duì)括弧中表達(dá)式進(jìn)行判斷的同時(shí)已將“num / 10”的值賦給了num?