46. Eb Alto Saxophone Player (CPE11020, UVA10415) - CPE一顆星解答與說明

   

   👉  CPE 一顆星選集列表(49題) 題目說明與解答

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  表示不是最後一個數字
      • 多印出空白
  • 每筆測資最後要印出換行


CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明