Chinese, Traditional subtitles

← 12-17 Define and Call a Method - Solution

Get Embed Code
13 Languages

Showing Revision 1 created 10/12/2015 by sp8.

  1. 讓我們來一起做第一步 也就是新增一個新方法到 MainActivity
  2. 你可以選擇在檔案的任何位置新增方法
  3. 只要它在其它方法的括弧之外就可以了
  4. 我要把它新增到我們定義的其它方法的下面
  5. 也就是 calculatePrice 方法的下面
  6. 我們把存取修飾詞設定為 private 因為只有主活動內的項目
  7. 才會存取這個方法
  8. 返回型別應該是字串
  9. 因為 createOrderSummary 方法應返回一個字串
  10. 然后 方法的名稱是 createOrderSummary
  11. 然后它應該使用價格作為輸入 這是一個數值
  12. 好了 我們需要完成這個方法簽章
  13. 但是現在我們需要實施這個方法 讓它返回這條訊息
  14. 訊息的起頭是名稱 數量 總計 然后是謝謝
  15. 現在我將繼續 復制這條代碼
  16. 然后我要把它貼入 createOrderSummary 方法
  17. 現在我們可以從一些基本代碼開始
  18. 不同之處在於
  19. 訂單摘要的起頭應該是名稱 而不是總價
  20. 現在我要移到下一行 并保存供后面使用
  21. 我要初始化價格訊息變數為 Name
  22. 然后是 Kaptain Kunal.
  23. 然后在一行 我要更新價格訊息
  24. 我要追加到現有訊息
  25. 應該寫為 價格訊息加新文字
  26. 我想要添加數量 然后添加數量變數
  27. 由於變數是全局變數
  28. 我們能夠在這個方法內存取它
  29. 好了 現在我們有了名稱和數量
  30. 在下一行 我想要再次更新 priceMessage
  31. 并且再添加一些文字
  32. 實際上 這個文字應該是總價格
  33. 因此我可以使用前面的內容
  34. 好了 在最后一行我們再次更新 priceMessage
  35. 取那個字串的現有值 然后增加文字 Thank you!
  36. 看上去還不錯 但還是有錯誤
  37. 它說缺少返回陳述式
  38. 由于我們期望返回一個摘要字串
  39. 因此我需要新增另一行代碼 也就是 return
  40. 后面是返回值
  41. 在這個例子中 返回值是 priceMessage
  42. 我也在末尾新增一個分號
  43. 好了 沒有錯誤了
  44. 看起來我們的代碼還不錯 因此我想運行并測試一下
  45. 好了現在我把數量更改為3
  46. 我按一下 order 按鈕 但是沒有反應
  47. 我們看看出了什么問題
  48. 我們仔細看這段代碼 我看到了問題在哪里
  49. 這里有報警說 private 方法 createOrderSummary
  50. 從沒有被使用
  51. 我忘了調用它
  52. 現在我們返回到測驗想幻燈片
  53. 我們已經成功完成第一個任務 但是我需要
  54. 調用submitOrder方法調用createOrderSummary方法
  55. 返回到Android Studio 我需要糾正submitOrder方法
  56. 我已經計算價格 是正確的
  57. 但是現在我需要把它傳遞進入createOrderSummary方法
  58. 因此我需要使用價格變數
  59. 來正確調用createOrderSummary方法
  60. 這個方法的返回值將會存放到
  61. priceMessage變數
  62. 我不需要這行代碼了
  63. 因為"Thank you"已經這里了
  64. 因此我可以刪除它
  65. 然后更新熒屏內容 我需要做的是
  66. 使用priceMessage變數調用displayMessage方法 這和前面一樣
  67. 現在我嘗試再次執行應用程式
  68. 如果我把數量變更為3
  69. 我按一下order按鈕 還是沒有反應
  70. 大多數文字都在一行內 應該分成多行
  71. 我們回過頭 更正我們的代碼
  72. 看到這段代碼 我意識到我忘了新行字符
  73. 我已經正確新增Thank you 但是沒有為其他行新增這個訊息
  74. 現在我要把它新增到其他行
  75. 讓我們再次運行
  76. 這次正常了
  77. 太好了
  78. 現在Kaptain Kunal可以訂購三杯咖啡
  79. 你還可以對你的代碼進行其它優化
  80. 請注意 你可以在createOrderSummary方法內調用calculatePrice方法
  81. 而不是作為輸入參數進行傳遞
  82. 因此在這里調用calculatePrice
  83. 這也會正常運行
  84. 但是我想告訴你 你可以使用一個方法的輸出
  85. 把它作為輸入傳遞給其他方法
  86. 我們把它放在createOrderSummary方法內
  87. 這和前面是一樣的
  88. 我要做的另外一件事情是使用+=運算子
  89. 這是一個縮寫形式
  90. 它等同于priceMessage = priceMessage +
  91. 因此我把所些代碼變更為 += 將會和前面是一樣的
  92. 只是這樣輸入的代碼更少 更簡潔
  93. 在calculatePrice方法內
  94. 我應該做的事情是立即返回值
  95. 而不是把它存放到一個區域變數 然后再返回
  96. 這樣代碼也會更簡潔
  97. 在這里在submitOrder方法內 我們并不建立訂單摘要
  98. 并把它存放入一個變數 然后在后面使用它
  99. 我可以調用createOrderSummary 然后調用displayMessage
  100. 結果也是一樣的
  101. createOrderSummary方法的返回值是一個字串
  102. 然后被作為輸入參數傳遞給displayMessage方法
  103. 你也可以這樣做 而且更容易理解
  104. 所有這些小竅門和小技巧都是使用相同的邏輯
  105. 但是為了避免忘記 應該在這個方法的頂部增加Javadoc備注
  106. 描述這個方法要做的事情
  107. 從技術上說 private方法并不需要Javadoc備注
  108. 但是為方法書寫描述是一個很好的做法
  109. 這樣別人在閱讀你的代碼時
  110. 就能知道你想要做什么
  111. 這個方法的描述告訴我們 它要建立一個訂單摘要
  112. 輸入參數是訂單價格 返回的內容是文字摘要