java从键盘输入一行中英文混合的文字,统计其中出现的每个英文字母的频率并依字母表顺序,依次输出统计结果,统计时忽略字母大小写的区别。
时间: 2024-10-03 20:04:24 浏览: 58
在Java中,你可以使用`Scanner`类获取用户键盘输入,然后遍历字符串,统计每个英文字符(只考虑ASCII字母,忽略大小写)的频率。这里是一个简单的示例:
```java
import java.util.*;
public class LetterFrequencyCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一串中英文混合的文字:");
String input = scanner.nextLine().toLowerCase(); // 转换为小写
// 创建一个Map存储字母及其频率
Map<Character, Integer> letterCount = new HashMap<>();
for (char c : input.toCharArray()) {
if (Character.isLetter(c)) { // 检查是否为字母
letterCount.put(c, letterCount.getOrDefault(c, 0) + 1); // 更新计数
}
}
// 按照字母表顺序打印统计结果
for (char letter : sortedKeys(letterCount)) {
System.out.println("字母 " + letter + ": " + letterCount.get(letter));
}
// 自定义排序函数
private static char[] sortedKeys(Map<Character, Integer> map) {
return map.keySet().stream()
.sorted(Comparator.comparing((c) -> c))
.toArray(Character[]::new);
}
}
}
```
在这个程序中,我们首先将用户输入转换为小写,然后遍历字符串中的每一个字符,如果字符是字母,就增加该字母在map中的计数值。最后,我们通过自定义的`sortedKeys`方法按照字母表顺序打印出每个字母及其频率。
阅读全文