用 Map 计算硬木种类

x33g5p2x  于2022-03-15 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(248)

一 问题描述

某国有数百种硬木,该国自然资源部利用卫星成像技术编制了一份特定日期每棵树的物种清单。计算物种占所有种群的百分比。

输入:输入包括每棵树的物种清单,每行一棵树。

输出:按字母顺序输出植物种群中代表的每个物种的名称,然后是占所有种群的百分比,保留小数后4位。

输入样例:
H R E G F D S E F D H U Y T G H F R D G J Y N H G F R I L J H T F R D E H G F T K H

exit

输出样例

D 9.5238

E 7.1429

F 14.2857

G 11.9048

H 16.6667

I 2.3810

J 4.7619

K 2.3810

L 2.3810

N 2.3810

R 9.5238

S 2.3810

T 7.1429

U 2.3810

Y 4.7619

二 算法设计

本问题统计每个物种的数量,计算占所有种群的百分比。可以在排序后统计并输出结果,也可以利用 map 自带的排序功能轻松统计。

三 实现

package map;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class MapTest {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        double count = 0;
        Scanner scanner = new Scanner(System.in);

        while (true) {
            String tree = scanner.next();
            if (tree.equals("exit")) {
                break;
            }
            Integer treeNum = map.get(tree);
            if (treeNum == null) {
                map.put(tree, 1);
            } else {
                map.put(tree, treeNum + 1);
            }
            count++;
        }

        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            System.out.println(entry.getKey() + " " + String.format("%.4f", 100 * entry.getValue() / count));
        }
    }
}

四 测试

绿色为输入,白色为输出

相关文章