2012-07-01 39 views
1

我需要编写一个函数来计算字符串中每个字母的频率。使用StringTokenizer计数字符

这是一个例子:

我收到了文件:notes.txt包含消息:“您好,这是来自内布拉斯加州的杰克”

当我读文件,这是结果:

一:3 H:1 E:2 1:2 等

有人告诉我,我可以使用Stringtokeizer,这是真的吗?

+0

这是真的。还有很多其他的方法可以做到这一点。你有什么尝试? – Jeffrey

+1

你能否提供一些你自己的代码?我们不会为你做所有事情。 –

+0

[写入字符串中的信息]的可能的重复(http://stackoverflow.com/questions/11303174/writing-information-in-a-string) – Joey

回答

1
public static void main(String... args) { 

    String str = "Hello this is Jack from Nebraska"; 

    Map<Character, Integer> frequencies = new HashMap<Character, Integer>(); 
    for (char c : str.toCharArray()) { 
     if (!frequencies.containsKey(c)) 
      frequencies.put(c, 1); 
     else 
      frequencies.put(c, frequencies.get(c) + 1); 
    } 

    System.out.println(frequencies); 
} 

输出:

{f=1, =5, e=2, b=1, c=1, a=3, o=2, N=1, l=2, m=1, H=1, k=2, h=1, J=1, i=2, t=1, s=3, r=2} 
0

你可以使用一个多集/包的数据结构的方法。使用番石榴它看起来像:在

public static void main(String... a) { 
    final String str = "Hello this is Jack from Nebraska"; 

    final Builder<Character> b = ImmutableMultiset.builder();   
    for (char c : str.toCharArray()) 
     b.add(c); 

    System.out.println(b.build()); 
} 

结果:

[H, e x 2, l x 2, o x 2, x 5, t, h, i x 2, s x 3, J, a x 3, c, k x 2, f, r x 2, m, N, b]

+0

大卫,有没有更简单的方法来做到这一点没有任何复杂的代码? – m4g4bu

+0

它为什么修剪空间?看起来像“无”出现五次... – dacwe

+0

@dacwe我相信这是该职位的格式化的结果,不完全如何输出看起来。 – david