用java代码:读取一个成语详细信息列表,将成语与它的其他信息分割(冒号分割),构建成语列表,遍历成语列表,用count统计每个成语末尾字能够与多少成语开头字相同,将原来的信息每一条加上count后输出到另一个文件
时间: 2024-03-11 15:50:23 浏览: 144
好的,以下是Java代码实现:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class IdiomInfoList {
public static void main(String[] args) {
// 定义输入文件路径和输出文件路径
String inputFile = "idiom_info_list.txt";
String outputFile = "idiom_info_list_count.txt";
// 定义成语列表和成语末尾字与开头字相同的数量Map
List<String> idiomList = new ArrayList<>();
Map<Character, Integer> countMap = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
// 读取每一行成语信息
String line;
while ((line = reader.readLine()) != null) {
// 将成语与其他信息分割
String[] parts = line.split(":");
// 将成语加入成语列表
String idiom = parts[0];
idiomList.add(idiom);
// 计算成语末尾字与开头字相同的数量
char lastChar = idiom.charAt(idiom.length() - 1);
countMap.put(lastChar, countMap.getOrDefault(lastChar, 0) + 1);
// 将原来的信息每一条加上count后输出到另一个文件
String newLine = line + ":" + countMap.get(lastChar) + "\n";
writer.write(newLine);
}
// 遍历成语列表,打印每个成语末尾字能够与多少成语开头字相同
for (String idiom : idiomList) {
char lastChar = idiom.charAt(idiom.length() - 1);
int count = countMap.get(lastChar);
System.out.println(idiom + ":" + count);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们首先定义了输入文件路径和输出文件路径、成语列表和成语末尾字与开头字相同的数量Map。然后,我们使用Java 7引入的`try-with-resources`语句,创建了一个`BufferedReader`来读取输入文件,创建了一个`BufferedWriter`来写入输出文件。
在读取每一行成语信息时,我们首先将成语与其他信息分割,然后将成语加入成语列表。接着,我们计算成语末尾字与开头字相同的数量,并将其加入`countMap`。最后,我们将原来的信息每一条加上count后输出到另一个文件。
在遍历成语列表时,我们使用`countMap`来统计每个成语末尾字能够与多少成语开头字相同,然后打印出来。
希望这个代码能够解决你的问题!
阅读全文