分析一行文字中的字符频率

时间:2016-02-22 17:15:18

标签: java arrays frequency

如何创建分析Java中一行文字中字符频率的代码?

我知道我必须使用数组,但我不完全理解数组,而且我不太清楚如何解决这个问题。我需要包括每个字母(只有大写),数字,空格和6个标点符号("-'.!,)。

因此,如果用户输入的行为:A-C E'? 099A "

输出应如下所示:

A:2
C:1
E:1
DIGITS:3
SPACES:3
PUNCTUATION:3

3 个答案:

答案 0 :(得分:0)

将输入<div class="align-contents"> <div class="profile align"> <div class="PP"></div> <div class="status"></div> </div> <div class="profile align"> <div class="PP"></div> <div class="status"></div> </div> <div class="profile align"> <div class="PP"></div> <div class="status"></div> </div> <div class="profile align"> <div class="PP"></div> <div class="status"></div> </div> </div>拆分为String并使用char[]循环遍历该数组。创建要计数的计数器。对于每个角色,运行检查。

我对this question的主题做了很好的回答。

答案 1 :(得分:0)

您应该使用HashMap。 HashMaps包含键和值对。因此,您可以使用简单的if语句迭代字符串,添加新值(使用count 1)或增加已存在的值。

HashMap<String, Integer> hm = new HashMap<String, Integer>();

for (int i = 0; i < string.length(); i++) {
    char c = string.charAt(i);
    String s = String.valueOf(c);
    if (hm.containsKey(s)) {
        int count = hm.get(s);
        hm.put(s, count + 1);
    } else {
        hm.put(s, 1);
    }
}

答案 2 :(得分:0)

如果hashmaps听起来太复杂,这是另一种方法

public static void CharSearcher() {
    int Counter;
    String inputString = "A-C E'? 099A";
    char[] charArray = inputString.toCharArray();

    for (Counter = 0; Counter < charArray.length; Counter++)
    {
        int num = 0;
        char current = charArray[Counter];

        for (int innerCounter = 0; innerCounter < charArray.length;
                innerCounter++)
        {
            if (charArray[innerCounter] == current) {
                num++;
            }
        }

        System.out.println(current + ":" + num);
    }
}

这将列出所有角色的出现次数,现在您只需调整代码即可按照您想要的方式显示。