请你使用JDK自带的JavaAPI实现读取“/home/doc/xuanwu.txt”文件,统计文件中“即信、玄讯、云通信”各个单词出现的次数,并按降序输出到控制台(输出格式:即信(8)、讯(0)、云(5))。请写出实现代码。
时间: 2023-09-10 18:05:02 浏览: 152
### 回答1:
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class ReadFile {
public static void main(String[] args) {
try {
File file = new File("/home/doc/xuanwu.txt");
Scanner scanner = new Scanner(file);
Map<String, Integer> wordCounts = new HashMap<>();
while (scanner.hasNext()) {
String word = scanner.next();
if (wordCounts.containsKey(word)) {
int count = wordCounts.get(word);
wordCounts.put(word, count + 1);
} else {
wordCounts.put(word, 1);
}
}
scanner.close();
wordCounts.entrySet()
.stream()
.sorted((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue()))
.forEach(entry ->
System.out.println(entry.getKey() + "(" + entry.getValue() + ")"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
### 回答2:
可以使用Java的File类、Scanner类和HashMap类来实现读取文件和统计单词出现次数的功能。下面是实现代码:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class WordCount {
public static void main(String[] args) {
String filePath = "/home/doc/xuanwu.txt"; // 文件路径
try {
File file = new File(filePath);
Scanner scanner = new Scanner(file);
Map<String, Integer> wordCountMap = new HashMap<>();
while (scanner.hasNext()) {
String word = scanner.next();
if (word.equals("即信") || word.equals("玄讯") || word.equals("云通信")) {
if (wordCountMap.containsKey(word)) {
int count = wordCountMap.get(word);
wordCountMap.put(word, count + 1);
} else {
wordCountMap.put(word, 1);
}
}
}
wordCountMap.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
.forEach(entry -> System.out.println(entry.getKey() + "(" + entry.getValue() + ")"));
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
在代码中,首先定义了文件路径`filePath`,然后使用`File`类创建相关文件对象。接下来创建`Scanner`对象来读取文件内容。
使用`HashMap`对象`wordCountMap`来统计各个单词出现的次数。在扫描器的`while`循环中,针对每个单词,判断是否为目标单词即信、玄讯或云通信,并根据情况更新`wordCountMap`中对应单词的计数。最后,使用Java 8 Stream对`wordCountMap`进行降序排序并按要求输出到控制台。
需要注意的是,代码中的文件路径`filePath`需要根据实际情况进行修改。并且在使用Scanner读取文件时,需要处理可能抛出的FileNotFoundException异常。
### 回答3:
可以使用Java的File类和Scanner类来读取文件,并使用HashMap来统计单词出现的次数。具体实现代码如下:
```java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class WordCount {
public static void main(String[] args) {
String filePath = "/home/doc/xuanwu.txt"; // 文件路径
// 创建一个HashMap用于统计单词出现的次数
Map<String, Integer> wordCountMap = new HashMap<>();
try {
// 创建文件对象
File file = new File(filePath);
// 创建Scanner对象用于读取文件
Scanner scanner = new Scanner(file);
// 循环读取每一行
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// 使用正则表达式分割每一行的单词
String[] words = line.split("\\s+");
// 遍历每个单词,统计出现次数
for (String word : words) {
if (wordCountMap.containsKey(word)) {
wordCountMap.put(word, wordCountMap.get(word) + 1);
} else {
wordCountMap.put(word, 1);
}
}
}
// 按降序输出到控制台
wordCountMap.entrySet().stream()
.sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue()))
.forEach(entry -> System.out.println(entry.getKey() + "(" + entry.getValue() + ")"));
// 关闭Scanner
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
运行代码后,将会输出统计结果,例如:
```
即信(8)
云通信(5)
玄讯(0)
```
注意:代码中的`filePath`需要根据实际的文件路径进行修改。
阅读全文