如果打完代碼發現,有重複一樣的代碼好多次,差別只在數值不同的話該怎辦?
只重複兩次看起來還好,萬一用到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++
上方用到的代碼:點此