展开全部
给你代码,只是做了一下简单的测试,如果有问636f707962616964757a686964616f31333332623262题,回复有问题,我在下边看到你的邮件了,
有问题与你邮件联系。import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class App {
private static String ENTER = "\r\n";
public static void main(String[] args) {
try {
new App().execute();
} catch (Exception e) {
}
}
public void execute() throws Exception {
// 读入待统计的词汇集合,认为make.txt文件中一行是一个词
FileReader fr = new FileReader("make.txt");
BufferedReader br = new BufferedReader(fr);
Map map = new HashMap();
while (br.ready()) {
map.put(br.readLine(), new Info());
}
br.close();
fr.close();
// 需要统计的英文小说
fr = new FileReader("src.txt");
br = new BufferedReader(fr);
int lineno = 1;
while (br.ready()) {
String line = br.readLine();
// 遍历要统计的词汇
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
Info info = map.get(key);
// 词汇的统计分析
analysis(lineno, key, line, info);
}
}
br.close();
fr.close();
FileWriter fw = new FileWriter("dest.txt");
// 遍历要统计的词汇 输出结果
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
String key = iter.next();
Info info = map.get(key);
fw.write(key + ENTER);
for (int i = 0; i
fw.write(info.linenos.get(i) + "行出现 [" + info.counts.get(i)
+ "]次" + ENTER);
}
}
fw.close();
}
private void analysis(int lineno, String word, String line, Info info) {
int count = 0;
while (line.indexOf(word) != -1) {
count++;
int index = line.indexOf(word);
line = line.substring(index + word.length());
}
if (count != 0) {
info.linenos.add(lineno);
info.counts.add(count);
}
}
}
class Info {
// 行号
List linenos = new ArrayList();
// 出现次数
List counts = new ArrayList();
}