-5

用户将输入一个字符串,例如如果用户输入 YYYCZZZZGG:程序将评估字符串中字符的频率。对于YYYCZZZZGG字符串,C只出现1次,G重复2次,Y出现频率3,Z出现频率4。

在找到每个字母的数字后,如何使用程序输出的数字绘制条形图?

4

5 回答 5

1

使用阿帕奇StringUtils

它包含一个可以像这样使用的方法StringUtils.countMatches("YYYCZZZZGG", "Y");

于 2013-04-30T09:11:39.950 回答
0
int count = StringUtils.countMatches("YYYCZZZZGG", "C");

只是从Java 复制粘贴的问题:如何计算字符串中 char 的出现次数?

于 2013-04-30T09:09:32.927 回答
0
    String str="YYYCZZZZGG";
    Map<Character,Integer> map=new HashMap<Character,Integer>();

    for (char c : str.toCharArray()) {
        if(map.containsKey(c))
        {
            int i=map.get(c);
            i++;
            map.put(c, i);
        }
        else
        {
            map.put(c, 0);
        }
    }

    for(Map.Entry<Character, Integer> entry:map.entrySet())
    {
        char c=entry.getKey();
        int  count=entry.getValue();
    }
于 2013-04-30T09:11:07.213 回答
0

你可以这样做:

 String s = "YYYCZZZZGG";
 Map<Character, Float> m = new TreeMap<Character, Float>();
 for (char c : s.toCharArray()) {
     if (m.containsKey(c))
            m.put(c, m.get(c) + 1);
        else
            m.put(c, 1f);
 }

 for (char c : s.toCharArray()) {
      float freq = m.get(c) / s.length();
      System.out.println(c + " " + freq);
  }

或者您可以使用 StringUtils 类,例如:

System.out.println("The occurrence of Z is "+StringUtils.countMatches(s, "C"));
于 2013-04-30T09:11:33.437 回答
0

尝试这个:

public static void main(String[] args) {
    String input = "YYYCZZZZGG";
    Map<Character, Integer> map = new HashMap<Character, Integer>(); // Map
    // to store character and its frequency.
    for (int i = 0; i < input.length(); i++) {
        Integer count = map.get(input.charAt(i)); // if not in map
        if (count == null)
            map.put(input.charAt(i), 1);
        else
            map.put(input.charAt(i), count + 1);
    }
    System.out.println(map);
}

输出:

{G=2, C=1, Y=3, Z=4}
于 2013-04-30T09:15:37.733 回答