46. Eb Alto Saxophone Player (CPE11020, UVA10415) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 計算每隻手指按壓按鈕的次數,手指有 10 隻(左手 5 + 右手5)
輸入說明
- 第一行為測試資料的筆數 t
- 每一行為一筆測試資料
- 使用字串表示歌曲
- 包含特 14 個定字母
輸出說明
- 根據每筆測試資料,輸出 10 個數字,代表各手指按壓的次數
解題技巧
- 使用長度為 10 的字串來表示音調的指法
- 讀取字串中的字元
- 操作 Map
解題過程
取得輸入
- 取得資料筆數
- 根據資料筆數取得歌曲
- 宣告手指數量 10 (左手 5 + 右手 5)
- 宣告用來統計每隻手指按壓的次數陣列,長度為手指數量
宣告用來儲存音符與演奏指法的 Map
- 使用 TreeMap< Character, String> 將音符視為 key,手指是否按壓為 value
- Map 集合 <K, V>
- 一個鍵值 Key對應一個元素 Value
- 鍵值不能重複
- TreeMap 是一個會根據鍵值Key排序的集合
- 宣告方法
- TreeMap <類別, 類別> = new TreeMap <類別, 類別>();
- TreeMap < Character, String> = new TreeMap < Character, String>();
- 此處的類別不能放基本資料型別,要放參考資料類別
呼叫 Map 方法
- 增加
- put(K key, V value)
- 判斷
- containsKey(Object key)
- containsVaule(Object value)
- 取Key
- keySet() :具有唯一性的 key 集合
- 取Value
- get(Object key)
增加音符與演奏指法
- 呼叫 Map 的 put()方法,將音符與對應的指法存入
- 用 10 個字串來表示演奏該音符時所需按的手指
- 0 表示手指不用按壓, 1 表示手指要按壓
統計演奏過程中指法按壓的次數
- 設定目前手指的按壓狀態,一開始手指都沒有按壓
- 從歌曲字串中讀取要演奏的音符
- 使用 for 迴圈與 String 提供的 chatAt() 方法讀取字元
- 將字元視為音符並找出要演奏的音符指法
- 呼叫 Map 的 get() 方法
統計手指按壓次數
- 使用 for 迴圈,逐一讀取 10 根手指
- 判斷目前與目標的手指按壓狀態,呼叫 String 提供的 charAt() 方法
- 判斷特定的手指,目前指法是否為 0,表示沒有按壓
- 判斷特定的手指,目標指法是否為 1,表示有按壓
- 沒有按(0),變成有按(1),則該手指按壓次數 + 1
- 將目前指法更新為目標指法
印出演奏過程中每隻手指的按壓次數
- 使用 for 迴圈,逐一統計按壓次數的陣列
- 印出特定手指的按壓次數
- 須注意數值之間要以空白格開
- 最後一個數字後面不能有空白
- 須額外判斷目前的索引位置是否為 9 ,如果不是 9 表示不是最後一個數字
- 多印出空白
- 每筆測資最後要印出換行
留言
張貼留言