java输入大量文本统计各个单词数量,删除标点符号,区分大小写
时间: 2023-06-08 10:04:53 浏览: 118
您好!关于您的问题,我可以提供一种方法。您可以使用Java中的HashMap来记录每个单词出现的次数。具体步骤如下:
1. 首先,读取大量文本并将其存储为一个字符串。
2. 然后,删除所有的标点符号,可以使用正则表达式来实现。
3. 接下来,将字符串按空格分割,得到所有单词,同时还要将所有单词转换为小写以区分大小写。
4. 遍历所有单词,并将它们添加到HashMap中。如果单词已经存在于HashMap中,则将该单词的值加1。如果单词不存在于HashMap中,则将其添加到HashMap中,并将计数器初始化为1。
5. 最后,遍历HashMap并输出每个单词以及它的出现次数。
这样,您就可以非常方便地统计各个单词的数量了。希望能对您有所帮助!
相关问题
从键盘录入一段英文文本(句子之间的标点符号只包括“,”或“.”,单词之间、单词与标点之间都以" "分割。 要求:按照每个单词的长度由高到低输出各个单词(重复单词只输出一次),如果单词长度相同,则按照单词的首字母顺序(不区分大小写,首字母相同的比较第二个字母,以此类推)升序输出。java实现
好的,以下是Java实现的代码:
```java
import java.util.*;
public class SortWords {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入英文文本:");
String sentence = scanner.nextLine();
sortWords(sentence);
}
public static void sortWords(String sentence) {
// 将句子分割成单词列表
String[] words = sentence.split(" ");
// 创建一个HashMap用于存储单词及其长度
Map<String, Integer> wordMap = new HashMap<String, Integer>();
for (String word : words) {
// 去除标点符号
word = word.replaceAll("[,.]", "");
wordMap.put(word, word.length());
}
// 使用Comparator定义排序规则,先按单词长度排序,再按字母顺序排序
Comparator<Map.Entry<String, Integer>> cmp = new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if (o1.getValue() != o2.getValue()) { // 按单词长度排序
return o2.getValue() - o1.getValue();
} else { // 如果单词长度相同,按字母顺序排序
return o1.getKey().compareToIgnoreCase(o2.getKey());
}
}
};
// 将HashMap转换成List进行排序
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(wordMap.entrySet());
Collections.sort(list, cmp);
// 输出排序结果
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey());
}
}
}
```
你可以运行这个程序并输入英文文本,程序将按照要求输出排序后的单词列表。例如:
```
请输入英文文本:From the moment that I met you, all those years ago, not a day has gone by when I haven't thought of you.
thought
moment
haven't
those
years
met
from
when
that
you
all
day
ago
and
not
```
希望这可以帮助你!
阅读全文