求大佬指點為何本代碼中關(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("它是個"?+?count?+?"位的數(shù)!"); ?? ??????????break; ?? ??????}else{ ??? ?????????num?=?num?/?10; ?? ??????} ?? ????} ??} }
? ? ?首先我認為代碼中if循環(huán)會執(zhí)行三次,所以我在for循環(huán)中將變量count初始化為0,三次循環(huán)后輸出“它是個3位的數(shù)!”,從而實現(xiàn)任務需求。然而實際運行后發(fā)現(xiàn)if循環(huán)僅執(zhí)行兩次,所以我將for循環(huán)中count變量重新初始化為1方使得程序得以輸出正確結(jié)果。所以求各位大佬指點為何if執(zhí)行了兩次后變量num的值便滿足if循環(huán)后的判斷條件“num / 10 == 0”呢?謝謝指點!
2019-02-26
因為num=num/10會執(zhí)行兩遍,第三次num/10==0,所以會滿足if里面的判定條件,執(zhí)行輸出語句,如果count初始化為0的話,此時count==2,而此時會執(zhí)行if里面的break,會跳出整個循環(huán),所以count初始化必須為1,換句話說,else后面的語句運行了兩次,if后面的語句運行了一次,而for循環(huán)僅僅執(zhí)行兩次。
2019-02-26
難道是因為if對括弧中表達式進行判斷的同時已將“num / 10”的值賦給了num?