【问题标题】:Java: Count number of letters in text fileJava:计算文本文件中的字母数
【发布时间】:2014-12-01 15:54:13
【问题描述】:

如何计算每个字母的总数?我想我可以使用StringUtils.countMatches,但我不知道如何使用它。

另外,我是否需要在字符之间放置空格以便我的程序计算它们?如果是这样,这就是我所拥有的,它将不起作用:

添加空格的代码:

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;
  }                       

非常感谢!!

【问题讨论】:

    标签: java count character


    【解决方案1】:

    最好的通用方法(我会让你计算出确切的代码)是维护一个数组来存储每个字符的计数。 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)]++;
    

    但如果您明确转换,可能会更清楚发生了什么。

    【讨论】:

    • 您也可以使用Map&lt;Character, Integer&gt; 进行计数,特别是如果您假设文本是基于 ASCII 的语言,您只需要庞大数组的一小部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多