java中如何统计一段文本每个汉字出现频率

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class WordCount {
  public HashMap<String, Integer>count(File file)
  {
   HashMap<String, Integer>map=new HashMap<String, Integer>();
   long count = 0;
   String regex = "[\\u4e00-\\u9fa5]";
   try{
    BufferedReader in=new BufferedReader(new FileReader(file));
    String line=in.readLine();
    while(line!=null)
    {
     Pattern p = Pattern.compile(regex);
     Matcher m = p.matcher(line);
     while(m.find())
     {
      count++;
      String word=m.group();
      if(map.containsKey(word)){
       map.put(word, map.get(word)+1);
      }
      else {
     map.put(word, 1);
    }
     }
     line=in.readLine();
   
    }
   }catch (Exception e) {
  // TODO: handle exception
    System.out.println("File error");
 }
   System.out.println("字数: "+count);
   return map;
  }
  public static void main(String[] args) {
 File file=new File("D:\\dou.txt");
 WordCount wc=new WordCount();
 System.out.println("使用汉字数目: "+wc.count(file).size());
}
}

### 回答1: 可以使用Python编程语言来实现这个功能。具体步骤如下: 1. 读入一段文字,可以使用input()函数来实现。 2. 定义一个字典,用来存储每个字母出现频率。初始时,字典每个字母的值都为。 3. 遍历输入的文字,对于每个字母,将其在字典对应的值加1。 4. 输出字典每个字母出现频率。 下面是Python代码实现: text = input("请输入一段文字:") freq = {} for c in text: if c.isalpha(): if c in freq: freq[c] += 1 else: freq[c] = 1 for c in freq: print(c, freq[c]) ### 回答2: 输入一段文字后,统计每个字母出现频率是一项非常基础的计算任务,也是我们日常生活和工作经常需要用到的技能。具体操作步骤如下: 1. 首先,我们需要用电脑或手机打开文本编辑器或记事本等文本输入软件。然后输入一段需要统计的文字(可以是文或英文),并且在文本的末尾加上一个回车符。 2. 接着,我们需要编写一段程序来统计每个字母在输入文本出现次数。这个程序可以使用各种编程语言来实现,比如Python、C++、Java等等。在这里,我们以Python为例,给出一个简单的代码示例: ``` text = input() # 读入输入的文本 freq = {} # 初始化一个空字典,用来存储字母和出现频率的映射关系 for char in text: if char.isalpha(): # 只统计字母的频率,忽略其他字符 if char.lower() in freq: # 如果字母已经出现过了,就将它的频率加1 freq[char.lower()] += 1 else: # 如果是第一次出现,就将它的频率设为1 freq[char.lower()] = 1 # 输出每个字母的出现频率 for char, count in sorted(freq.items()): print(char, '-', count) ``` 3. 运行程序并查看输出结果。程序会将每个字母出现频率逐一输出,按照字母的字母表顺序排序。例如,对于输入文本“hello world”,程序的输出结果会是: ``` d - 1 e - 1 h - 1 l - 3 o - 2 r - 1 w - 1 ``` 其,每一行的第一个字符代表一个字母,后面跟着一个短横线和该字母出现频率。从这个输出结果可以看出,输入文本字母l出现次数最多,共出现了3次,而其他字母只出现了1到2次。 总之,统计每个字母在输入文本出现频率是一项简单而实用的计算任务,可以通过编写程序来快速完成。在实际应用,我们可以结合各种文本处理工具和算法来进一步挖掘和分析文字的内容。 ### 回答3: 假设我们有一个输入字符串,我们需要统计字符串每个字母出现频率。一种简单的方法是使用一个字典,字典的键为输入字符串每个字母,值为该字母在字符串出现次数。 我们首先创建一个空字典,然后遍历输入字符串每个字母。如果字母已经在字典存在,我们将其出现次数加1;否则,我们将字母添加到字典,并将其值设置为1。最后,我们遍历字典并输出每个字母和其出现次数。 以下是代码示例: ```python # 创建空字典 freq = {} # 读取输入字符串 string = input("请输入一段文字:\n") # 统计每个字母出现次数 for char in string: if char in freq: freq[char] += 1 else: freq[char] = 1 # 输出每个字母和其出现次数 for char in freq: print("{}: {}".format(char, freq[char])) ``` 例如,假设输入字符串为“hello world”,则程序将输出以下内容: ``` h: 1 e: 1 l: 3 o: 2 : 1 w: 1 r: 1 d: 1 ``` 这表明输入字符串字母“h”出现了1次、“e”出现了1次、“l”出现了3次,以此类推。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值