43. Hardwood Species (CPE10426, UVA10226) - CPE一顆星解答與說明

   

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

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

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

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

不受網路或廣告影響,

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

題目

  • 計算樹種出現的百分比

輸入說明


  • 第一行為資料筆數 n,下面會隔一行
  • 每組測資,下面會隔一行
    • 組內的資料有多筆,每一列為一種樹的名稱



輸出說明


  • 輸出樹的名稱與百分比(小數點後 4 位)
  • 每組測試資料間隔一行
  • 按照樹木名稱排序 a - z



解題技巧

  • 使用 TreeMap 統計與排列

解題過程

取得輸入

  • 取得資料筆數,呼叫 nextInt()
  • 取得資料筆數後面的換行符號,呼叫 nextLine()
  • 取得空行,呼叫 nextLine()
  • 根據資料筆數,取得樹木名稱,呼叫 nextLine()




宣告統計樹木出現次數會用到的變數

  • 使用 TreeMap<String, Integer> 將樹木名稱視為 key出現次數為 value
    • Map 集合 <K, V>
      • 一個鍵值Key對應一個元素Value
      • 鍵值不能重複
      • TreeMap 是一個會根據鍵值Key排序的集合
    • 宣告方法
      • TreeMap <類別, 類別> = new TreeMap <類別, 類別>();
      • TreeMap < String, Integer> = new TreeMap < String, Integer>();
      • 此處的類別不能放基本資料型別,要放參考資料類別
  • 宣告 count 變數,型別為 double,紀錄總資料筆數
    • 因後續會計算出現的百分比,會有小數點,所以使用 double 型別


呼叫 Map 方法

  • 增加 
    • put(K key, V value)
  • 判斷
    • containsKey(Object key)
    • containsVaule(Object value)
  •  取Key
    • keySet() :具有唯一性的 key 集合
  •  取Value
    • get(Object key)

統計樹木出現次數

  • 每讀取一筆樹木資料, 總筆數 count 就要 + 1
  • 判斷此樹木名稱是否已經存在 map 中,呼叫 map.containsKey() 方法
  • 不存在:將樹木的出現次數設為 1 ,呼叫 map.put()方法
  • 存在:將樹木的出現次數更新為累加 1 ,呼叫 map.put()方法
  • 出現次數可呼叫 map.get() 方法取得

印出統計資料

  • 使用 foreach 讀取 map 中的資料
    • for(元素資料型別 變數名稱 : 集合){}
    • for(String tree : map.keySet()) {}
    • for(字串 某一樹木名稱 : 樹木名稱集合) {}
  • 樹木出現的百分比
    • 取得樹木出現次數,呼叫 map.get() 方法
    • 將出現次數 * 100 / 總出現次數 count 
      • 例如:A樹出現 3 次,總筆數為 6 次
        • A 數出現占百分比 50,3*100 / 6 =50
  • 數值到小數點第 4 位
    • 使用 printf 方法
      • System.out.printf("%s %.4f" , 變數1, 變數2)
      • 換行可使用:/r/n、%n、System.out.println();


處理換行

  • 判斷測試資料是否為第一組
  • 如果不是第一組,則須多印換行




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

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

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

不受網路或廣告影響,

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

留言

這個網誌中的熱門文章

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

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

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