java 统计String中某字符出现的次数
时间: 2024-05-15 18:17:06 浏览: 82
可以通过遍历字符串中的每个字符,判断是否等于目标字符,然后计数器加一的方式来统计目标字符出现的次数。代码如下:
```java
public static int countChar(String str, char ch) {
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ch) {
count++;
}
}
return count;
}
```
这里的参数 `str` 是要统计的字符串,`ch` 是要统计的目标字符。遍历字符串中的每个字符可以使用 `charAt()` 方法,判断是否等于目标字符可以使用 `==` 运算符。最后统计出的次数即为目标字符在字符串中出现的次数。
相关问题
用Java统计文件中中文字符出现次数并排序
下面是一个Java程序,可以实现统计文本文件中中文字符出现次数并按照出现次数排序的功能:
```java
import java.io.*;
import java.util.*;
public class ChineseCharCount {
public static void main(String[] args) {
String filename = "test.txt"; // 待统计的文件名
Map<Character, Integer> charMap = new HashMap<>(); // 用于存储中文字符和出现次数的映射
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
if (isChineseChar(c)) {
Integer count = charMap.get(c);
if (count == null) {
charMap.put(c, 1);
} else {
charMap.put(c, count + 1);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
List<Map.Entry<Character, Integer>> charList = new ArrayList<>(charMap.entrySet()); // 将映射转换为列表
charList.sort((e1, e2) -> e2.getValue().compareTo(e1.getValue())); // 按照出现次数从大到小排序
for (Map.Entry<Character, Integer> entry : charList) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
// 判断一个字符是否为中文字符
private static boolean isChineseChar(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS;
}
}
```
程序首先读取指定的文本文件,逐行遍历文件中的每个字符,如果一个字符是中文字符,则将其加入到一个映射中,并记录其出现次数。最后,将映射转换为列表并按照出现次数从大到小排序,输出结果。
程序中使用了`isChineseChar`方法来判断一个字符是否为中文字符,该方法判断的依据是该字符所属的`UnicodeBlock`是否为中文字符所使用的`UnicodeBlock`。
java统计字符串各个字符出现次数
可以使用Map来统计字符串中各个字符出现的次数,具体实现如下:
```java
public static Map<Character, Integer> countChars(String str) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
map.put(c, map.getOrDefault(c, 0) + 1);
}
return map;
}
```
这个方法接受一个字符串作为参数,返回一个包含字符和出现次数的Map。在方法中,我们使用一个for循环遍历字符串中的每个字符,然后使用Map的put方法将字符和出现次数存储在Map中。如果Map中已经存在该字符,则将其出现次数加1,否则将其出现次数初始化为1。最后返回这个Map即可。
下面是一个例子:
```java
String str = "hello world";
Map<Character, Integer> map = countChars(str);
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
```
这个例子将打印出字符串中每个字符出现的次数:
```
h: 1
e: 1
l: 3
o: 2
: 1
w: 1
r: 1
d: 1
```
阅读全文