Java统计字符串中每个汉字出现的次数
时间: 2023-11-15 09:04:32 浏览: 42
可以尝试以下代码实现:
```java
import java.util.HashMap;
import java.util.Map;
public class CountChineseCharacters {
public static void main(String[] args) {
String str = "Java统计字符串中每个汉字出现的次数";
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (isChinese(ch)) {
if (map.containsKey(ch)) {
map.put(ch, map.get(ch) + 1);
} else {
map.put(ch, 1);
}
}
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
System.out.println("汉字 " + entry.getKey() + " 出现了 " + entry.getValue() + " 次");
}
}
public static boolean isChinese(char ch) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT
|| ub == Character.UnicodeBlock.CJK_RADICALS_SUPPLEMENT
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.ENCLOSED_CJK_LETTERS_AND_MONTHS;
}
}
```
上述代码中,使用了一个 HashMap 来记录每个汉字出现的次数,isChinese 方法用来判断字符是否为汉字,最后输出每个汉字出现的次数。