在控制台输入一句英语, 获得每个字母出现的次数,注:每个字符作为key,出现的次数作为value

在控制台输入一句英语, 获得每个字母出现的次数,注:每个字符作为key,出现的次数作为value,放入map集合 该怎么写。

2个回答

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

public class Test {
    private void input() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一句英文!");
        String str = sc.nextLine();
        sc.close();
        print(count(str));
    }

    private Map<Character, Integer> count(String str) {
        int count = 0;
        Map<Character, Integer> map = new HashMap<Character, Integer>();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            for (int j = 0; j < str.length(); j++) {
                if (ch == str.charAt(j)) {
                    count++;
                }
            }
            map.put(ch, count);
            count = 0;
        }
        return map;
    }

    private void print(Map<Character, Integer> map) {
        for (Character key : map.keySet()) {
            System.out.println(key + "出现了" + map.get(key) + "次");
        }
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.input();
    }
}


望采纳

private Map count(String str) {
Map map = new HashMap();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
Integer count = map.get(ch);
if (count != null) {
count++;
} else {
count = 1;
}
map.put(ch, count);
}
return map;
}

将楼上兄弟的count()方法进行了优化,这样遍历一次就可以了。
linlin1987
王木木在coding 回复大大泡泡糖1996: 第一次get为空,说明这个字符之前没有统计过,记count = 1;如果不为空,说明这个字符之前出现过,则count++。最后再put进去,进行下一轮循环。
一年多之前 回复
qq_40391363
大大泡泡糖1996 Integer count = map.get(ch);这个Map没有东西,get?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐