编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,数统计每个单词出现的次,并按照单词出现次数由大到小排序后输出。
时间: 2024-05-01 17:17:06 浏览: 142
这是一个比较复杂的程序,需要用到字符串处理和数据结构。下面是一个可能的实现方案:
```python
import re
# 读入文本
text = ""
while True:
line = input()
if line == "":
break
text += line + "\n"
# 提取单词
words = re.findall(r"\b\w+\b", text)
# 统计单词出现次数
count = {}
for word in words:
count[word] = count.get(word, 0) + 1
# 按照出现次数排序
sorted_words = sorted(count.items(), key=lambda x: x[1], reverse=True)
# 输出结果
for word, cnt in sorted_words:
print(word, cnt)
```
这个程序使用了正则表达式来提取单词,使用了字典来统计单词出现次数,使用了列表排序来按照出现次数排序。注意,这个程序没有考虑大小写问题,即"Hello"和"hello"被视为不同的单词。如果需要考虑大小写问题,可以将所有单词转换为小写字母再进行统计。
相关问题
用Java编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,数统计每个单词出现的次,并按照单词出现次数由大到小排序后输出。
可以使用HashMap来统计单词出现的次数,然后用一个List来存储每个单词和它的出现次数,并按照出现次数排序输出。
代码如下:
```java
import java.util.*;
public class WordCount {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> wordCountMap = new HashMap<>();
// 从键盘读入英文文本
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.isEmpty()) {
break;
}
String[] words = line.split("\\s+"); // 使用正则表达式分割单词
for (String word : words) {
if (word.matches("[a-zA-Z]+")) { // 过滤掉非英文单词
int count = wordCountMap.getOrDefault(word, 0);
wordCountMap.put(word, count + 1);
}
}
}
// 将统计结果按照出现次数排序并输出
List<Map.Entry<String, Integer>> wordCountList = new ArrayList<>(wordCountMap.entrySet());
Collections.sort(wordCountList, (e1, e2) -> e2.getValue().compareTo(e1.getValue()));
for (Map.Entry<String, Integer> entry : wordCountList) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
这个程序可以处理多行英文文本,使用正则表达式分割单词时,使用了"\s+"表示一个或多个空白字符(包括空格、制表符、换行符等),过滤掉了非英文单词。
最后将统计结果按照出现次数排序并输出,使用了Java 8的Lambda表达式来定义Comparator。如果不熟悉Lambda表达式,可以使用传统的匿名类方式来定义Comparator,代码如下:
```java
Collections.sort(wordCountList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> e1, Map.Entry<String, Integer> e2) {
return e2.getValue().compareTo(e1.getValue());
}
});
```
java实训项目之编写一个程序,从键盘读入一段英文(多行),找出其中所有的英文单词,统计每个单词出现的次数,并按照单词出现次数由大到小排序后输出(可读取本机文件文本)。
您可以使用以下代码片段将图像加载到Supertextview的右侧:
```
Glide.with(context)
.load(imageUrl)
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
//将图像设置为Supertextview的右侧icon
supertextView.setCompoundDrawablesWithIntrinsicBounds(null, null, resource, null);
}
});
```
其中,`imageUrl`是您要加载的图像的URL,`supertextView`是您的Supertextview控件。在`onResourceReady()`方法中,您将Drawable对象作为资源传递,该对象将作为Supertextview的右侧icon设置。
阅读全文