2014-12-01 73 views
0

如何计算每个字母的总数?我想我可以使用StringUtils.countMatches但我不确定如何使用它。Java:计算文本文件中的字母数

此外,我是否需要在字符之间放置空格,以便我的程序能够计算它们?如果是这样,这是我已经和它不会工作:

代码添加空格:

char ch; 
ch = next().CharAt(0); 

switch (ch) { 

    case 'A': System.out.print ("A "); 
      break; 
    case 'B': System.out.print ("B "); 
      break; 
    case 'C': System.out.print ("C "); 
      break; 
    }      

谢谢大家这么多!

回答

0

最好的一般方法(我会让你计算出确切的代码)是维护一个数组,用于存储每个字符的计数。 Java中的char是一个16位无符号整数,这意味着可以声明

int[] counts = new int[65536]; 

,然后当要注册字符c的发生,可以

counts[(int) c]++; 

为了获取单个字符,你可以逐行读取文件中的行,然后经过String代表每一行,并对其进行处理:

for (int i=0; i<line.length(); i++) { 
    counts[(int) line.getCharAt(i)]++; 
} 

然后最后你可以读出你的数组来确定每个字符出现的次数。

从技术上讲,你不需要用(int)类型转换打扰,你可以只写

count[line.getCharAt(i)]++; 

,但它可能是更清楚发生了什么事情,如果你明确地转换。

+0

您也可以使用Map 进行计数,特别是如果您假设文本是基于ASCII的语言,那么您只需要一小部分巨大的数组。 – Robert 2014-12-01 20:53:23