ChatGPT帮我编码:用java实现读取txt文件内容,并统计每个字符出现的次数,按照降序打印输出字符和次数
ChatGPT的完整答复如下:
你可以使用Java的FileReader和BufferedReader类来实现读取txt文件内容。下面是一个示例代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class TxtTest {
public static void main(String[] args) {
try {
// 创建文件读取流
FileReader fr = new FileReader("/path/to/file.txt");
// 创建缓冲读取流
BufferedReader br = new BufferedReader(fr);
// 创建Map对象,用于统计每个字符出现的次数
Map<Character, Integer> charMap = new HashMap<>();
// 读取文件中的每一行内容
String line;
while ((line = br.readLine()) != null) {
// 遍历每一行中的每个字符
for (char c : line.toCharArray()) {
// 判断Map中是否存在该字符,如果存在则次数+1,否则次数为1
if (charMap.containsKey(c)) {
charMap.put(c, charMap.get(c) + 1);
} else {
charMap.put(c, 1);
}
}
}
// 关闭读取流
br.close();
fr.close();
// 将Map中的数据按照降序排列
Map<Character, Integer> sortedCharMap = new TreeMap<>(
(k1, k2) -> charMap.get(k2) - charMap.get(k1));
sortedCharMap.putAll(charMap);
// 打印输出字符和次数
for (Map.Entry<Character, Integer> entry : sortedCharMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们首先使用FileReader和BufferedReader类创建了文件读取流。然后,创建缓冲读取流。
评论区