Java學習記錄19 — while

張小雄
Jan 14, 2021

--

while 滿足結束條件之前會一直執行

把count+1取消,跟結束條件改變,

因為無法滿足結束條件,會一直執行到程序崩潰(記憶體不足),

可以看到在我強制結束程序前跑了130行

do 裡面是循環要執行的東西

while是條件,條件滿足後跳出循環

所以循環的寫法,目前學了3種方式

分別為line 6 、line 11 、line 16

小挑戰1:

創立名為isEvenNumber的method,接收名為number的int參數,回傳double。

判斷number是否為even,是的話回傳true,否的話false。

看到圖中用do的寫法

做了數字範圍內的偶數判斷

line 10 的意思是 如果( ! isEvenNumber) → ( ! true ) 意思是為flase,也就是奇數,那就continue。

意思是跳過剩下的步驟,也就是line 14,回到循環的開頭部份,進行新的循環。

continue是相對於break

簡單的說,如果滿足條件後

不想跳出就用continue

想跳出就用break

從字面上也好理解 就是 continue( 繼續 ) 、break( 中止 )

小挑戰1延伸:

優化上面代碼

把找到的偶數數字,相加計算出總和

並在找到5個偶數後break退出 並打印這些數字的總和

Digit Sum Challenge

創立名為sumDigits的method,接收名為number的int參數,回傳int。

如果number >=10 ,把每個數拆開相加,回傳總和。

例如:123 返回 1 + 2 + 3 = 6。

number 不是 >= 10 , 回傳 -1

Hint:使用 n% 10,n / 10。

小挑戰參考答案

小挑戰1

小挑戰1延伸

Digit Sum Challenge

P.S 這題我一開始是想說

取最前面數字,然後判定要乘幾個0

然後循環減去

像是123

取得1,然後判斷是百位數,得出 1 * 100

用123–100,剩下23

之後取2,判斷是十位數, 得出 2 * 10

用23–20,剩下3

結果整個卡住,不知道怎用代碼表現

卡在取得1

知道要 123 / 10 = 12 , 然後 12 / 10 = 1

這個要除10,2次

但如果換個數字123456,就不曉得要除幾次

有想到用count

但我用count+1方式去做,弄半天發現也不對

後來回去看題目

發現提示裡的%

我原本以為那是最後取個位數的時候用

突然醒悟過來

應該從後面開始取

就不用搞那麼多複雜的東西

從後面一個一個取

然後/10縮小數字

有了正確思路後

原本卡了1個多小時的題目

不到3分鐘就寫出來了

--

--

張小雄
張小雄

Written by 張小雄

記錄成為軟體工程師的過程

No responses yet