Java學習記錄12 — method

張小雄
Jan 6, 2021

--

如果打完代碼發現,有重複一樣的代碼好多次,差別只在數值不同的話該怎辦?

只重複兩次看起來還好,萬一用到10次以上時怎辦,若以後內容要新增、修改、刪除時怎辦?

代碼多到幾百幾千行後,人腦根本記不住哪裡需要修改。
這時候就需要用到method,把重複的代碼寫到一起,有需要在呼叫就好。

把重複的代碼寫入到11行,之後在6.7行調用。

11行創了一個叫calculate的method(名字自由取),並放入了四個參數,參數則在調用時填入。
所以執行順序是到第6行時系統看到調用method時,
找了找與calculate同名的method,找到後執行11行
走完calculate之後,才繼續往下走來到第7行,
又看到調用calculate的method去執行11行。

其實println就是method的一種,參數就是你在””裡輸入的東西
這個println收到後把他打印在螢幕上

method還能返回值

可以看到第12行的第3個關鍵字改了
從void改成int
void等於該method不回傳任何東西
int 等於執行完該method後會回傳int

看倒第16行跟第18行都有return 這就是要回傳的值
如果第14行有符合就回傳16行
沒有就回傳第18行

接著是把回傳的值 賦值給第6跟7行的兩個int變量
並在8.9行打印出來

這個例子中當然沒必要這樣搞
可以像上張圖一樣放在calculate執行

但如果是比大小就無法在calculate中做到了

對了,else的返回-1只是個例子,返回任何值都行
-1也常當做條件判斷,代表出現異常或失敗等
若該方法返回了-1,可以當做調用出現異常,進行其他處理

例如輸入完帳密 ,根據使用者輸入的內容與資料庫比對
結果發現沒有符合的結果,就可以返回-1
並提示使用者查無此帳號或者密碼輸入錯誤等訊息

小挑戰:

創造名為displayHighScorePosition的method,含有2個參數名:playerName, position

打印出playerName + “ to get into position: “ + position + “ on the high score table.”

創造名為calculateHighScorePosition的method,1個參數名:playerScore,並回傳值
判斷大於等於1000,回傳1
500~999,回傳2
100~499,回傳3
其他,回傳4

自定義四位選手名,分數各為1500、900、400、50,並調用上面兩個method

答案參考,有做才能看:

這個方法更酷,我看課程問與答同學跟助教分享的方法,利用前面教過的三元運算符

我原本以為三元運算符(Ternary Operator)只能三個條件,看來是誤會了,更多更少都能。

格式剛看時很複雜,其實很簡單
(playerScore >= 1000) ? 1
等於 條件1 ?條件1回傳值
接著不同條件用” :”分開
這樣看就很清楚

其實通過這個例子就能了解
三元運算符其實就是if的精簡版
如同 a = a + 1 精簡成 a++

上方用到的代碼:點此

--

--

張小雄
張小雄

Written by 張小雄

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

No responses yet