43. Hardwood Species (CPE10426, UVA10226) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 計算樹種出現的百分比
輸入說明
- 第一行為資料筆數 n,下面會隔一行
- 每組測資,下面會隔一行
- 組內的資料有多筆,每一列為一種樹的名稱
輸出說明
- 輸出樹的名稱與百分比(小數點後 4 位)
- 每組測試資料間隔一行
- 按照樹木名稱排序 a - z
解題技巧
- 使用 TreeMap 統計與排列
解題過程
取得輸入
宣告統計樹木出現次數會用到的變數
- 使用 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();
留言
張貼留言