由用户输入若干个英文字母或单词,空格分隔。编写程序统计这些字母或单词的出现频率,按升序保存为:“字母(单词):出现的次数”,输出该结果。如果用户直接输入回车,提示“请输入数据!”;如果用户输入数据中包含非法数据,系统提示“请全部输入英文字母或单词!”
时间: 2024-02-23 12:58:16 浏览: 98
好的,以下是Java的实现代码:
```java
import java.util.*;
public class WordFrequencyCounter {
public static void main(String[] args) {
// 获取用户输入的字符串
Scanner scanner = new Scanner(System.in);
System.out.print("请输入英文字母或单词,以空格分隔:");
String userInput = scanner.nextLine();
// 判断用户是否输入
if (userInput.isEmpty()) {
System.out.println("请输入数据!");
return;
}
// 去除用户输入字符串中的标点符号
userInput = userInput.replaceAll("[\\pP\\p{Punct}]", "");
// 判断用户输入是否合法
if (!userInput.matches("^[a-zA-Z ]*$")) {
System.out.println("请全部输入英文字母或单词!");
return;
}
// 将字符串转换为列表
String[] wordArray = userInput.split(" ");
// 统计单词出现频率
Map<String, Integer> wordMap = new HashMap<>();
for (String word : wordArray) {
if (wordMap.containsKey(word)) {
wordMap.put(word, wordMap.get(word) + 1);
} else {
wordMap.put(word, 1);
}
}
// 按照出现频率升序排序
List<Map.Entry<String, Integer>> sortedWordList = new ArrayList<>(wordMap.entrySet());
Collections.sort(sortedWordList, Comparator.comparing(Map.Entry::getValue));
// 输出结果
for (Map.Entry<String, Integer> entry : sortedWordList) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
```
希望能够帮到你!
阅读全文