從0學(xué)Java之Do-While循環(huán)
我們講了while循環(huán),它會(huì)首先判斷一個(gè)條件是否滿足,如果條件滿足,則執(zhí)行后面緊跟著的語句或語句括號,然后再次判斷條件是否滿足,如果條件滿足則再次執(zhí)行,直到條件不滿足為止。后面緊跟的語句或語句括號,就是循環(huán)體。
do-while循環(huán)和while循環(huán)很像,唯一的區(qū)別是我們在循環(huán)體執(zhí)行結(jié)束的時(shí)候才來判斷條件。也就是說,無論如何,循環(huán)都會(huì)執(zhí)行至少一遍,然后再來判斷條件。與while循環(huán)相同的是,條件滿足時(shí)執(zhí)行循環(huán),條件不滿足時(shí)結(jié)束循環(huán)。
①do-while循環(huán)
案例:數(shù)位數(shù),如果給你一串?dāng)?shù)字,讓你通過編程,讓計(jì)算機(jī)判斷出這一串?dāng)?shù)字是幾位數(shù),你打算怎么寫?
- 程序要讀入一個(gè)正整數(shù),然后輸出這個(gè)整數(shù)的位數(shù)。如:
- 輸入:3452,輸出:4
人看一眼就能看出來,這是4位數(shù),但計(jì)算機(jī)是通過判斷數(shù)的范圍來決定它的位數(shù),但如果是128475753943828482.....讓人數(shù)怎么辦,這時(shí)候就得依靠計(jì)算機(jī),因?yàn)橛?jì)算機(jī)最擅長的就是做算法,讓這串?dāng)?shù)字每除以10就記一位,這樣是不是就可以,讓我們試一下。
這么看好像完全沒有問題,但往往沒有問題的時(shí)候就會(huì)出現(xiàn)問題,如果是這一串?dāng)?shù)字是0呢,大家在這個(gè)代碼上試一下。
代碼運(yùn)行起來會(huì)顯示0,這顯然是不對的,0的位數(shù)是1,那如果用do-while循環(huán)是不是就可以把問題解決掉,在進(jìn)入循環(huán)體之前不做判斷,而是在執(zhí)行完一輪循環(huán)體的代碼之后,再來檢查循環(huán)的條件是否滿足,如果滿足則繼續(xù)下一輪循環(huán),不滿足則結(jié)束循環(huán)。
ok,現(xiàn)在輸入0顯示的位數(shù)是1,說明是對的,那再測試一下其他數(shù)。
我做了while循環(huán)和do-while循環(huán),兩個(gè)流程圖讓他們更加明朗一點(diǎn)。