从键盘输入一行中英文混合的文字、 统计其中出现的每个英文字母的频率并依字母表顺序、 依次输出统计结果、 统计时忽略字母大小写的区别。java
时间: 2024-09-28 11:09:44 浏览: 73
在Java中,你可以通过以下步骤来完成这个任务:
1. **获取用户输入**:
使用`Scanner`类读取用户的键盘输入,处理中英文混合的字符串。
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一行中英文混合的文字:");
String input = scanner.nextLine();
// 下面的代码将忽略大小写
input = input.toLowerCase();
}
}
```
2. **统计字母频率**:
创建一个HashMap存储每个字符及其出现次数。遍历输入字符串,只统计英文字母(A-Z和a-z)。
```java
import java.util.HashMap;
import java.util.Map;
Map<Character, Integer> letterCount = new HashMap<>();
for (char c : input.toCharArray()) {
if (Character.isLetter(c)) {
letterCount.put(c, letterCount.getOrDefault(c, 0) + 1);
}
}
```
3. **按字母顺序输出**:
使用`Character`类的排序特性,遍历字母Count并按照字母顺序打印结果。
```java
for (char c = 'a'; c <= 'z'; c++) {
if (letterCount.containsKey(c)) {
System.out.printf("%c: %d\n", c, letterCount.get(c));
}
}
```
4. **整合代码**:
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一行中英文混合的文字:");
String input = scanner.nextLine().toLowerCase();
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 c = 'a'; c <= 'z'; c++) {
if (letterCount.containsKey(c)) {
System.out.printf("%c: %d\n", c, letterCount.get(c));
}
}
}
```
阅读全文