Write a Java program that inputs a document and then outputs the frequencies of each alphabet character that appears within that document.
时间: 2024-09-14 13:05:13 浏览: 20
以下是一个简单的Java程序示例,用于输入一个文档并输出每个字母字符在文档中出现的频率。这个程序假设文档内容可以以字符串形式输入,如果是从文件中读取,需要使用Java的文件I/O处理类。
```java
import java.util.Map;
import java.util.HashMap;
import java.util.Scanner;
public class AlphabetFrequency {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入文档内容(以Ctrl+Z结束输入):");
String document = scanner.nextLine();
scanner.close();
Map<Character, Integer> frequencyMap = countFrequencies(document);
System.out.println("字母频率统计结果:");
for (Map.Entry<Character, Integer> entry : frequencyMap.entrySet()) {
if (Character.isAlphabetic(entry.getKey())) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
private static Map<Character, Integer> countFrequencies(String document) {
Map<Character, Integer> frequencyMap = new HashMap<>();
for (char c : document.toCharArray()) {
if (Character.isAlphabetic(c)) {
c = Character.toLowerCase(c); // 将字符转换为小写以便统计
frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
}
}
return frequencyMap;
}
}
```
这个程序的逻辑如下:
1. 创建一个`Scanner`对象用于读取输入。
2. 提示用户输入文档内容,并通过`nextLine()`方法读取整行文本。
3. 使用`countFrequencies`方法来统计文档中每个字母的出现频率,并将其存储在`frequencyMap`中。
4. 在`countFrequencies`方法中,通过遍历字符串中的每个字符,检查它是否是字母,并统计其频率。
5. 最后,遍历`frequencyMap`,并打印出每个字母及其对应的频率,同时忽略非字母字符。