学校图书馆共有 300 万册图书,想统计其中 Computer , Science ,计算机,科学这几个词出现的次数,并按照自然年度分类,如 2016 年出版的书籍中这几个词各自出现的次数, 2015 年······依次类推。
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Scanner;
/**
* 按年份,将所有书名录入文件中,每行只保存一本书的名字
*/
public class Demo {
static HashMap<String, Integer> map = new HashMap<>();
static {
map.put("Computer", 0);
map.put("Science", 0);
map.put("计算机", 0);
map.put("科学", 0);
}
/**
* 输入存储书名的文件名,检索
* @param file
*/
public void calculatorTimes(File file) {
// 非法输入
if (!file.exists()) {
return;
}
InputStream input = null;
Scanner scanner = null;
try {
// 用Scanner读入文件输入流
input = new FileInputStream(file);
scanner = new Scanner(input);
scanner.useDelimiter("\n");
// 对行的书名进行处理
while (scanner.hasNext()) {
calculatorTimes(map, scanner.next());
}
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
/**
* 输入书名,检索其关键字,更新map
* @param map
* @param bookName
*/
public void calculatorTimes(HashMap<String, Integer> map, String bookName) {
// 非法输入
if (bookName.length() == 0) {
return;
}
if (bookName.contains("Computer")) {
map.put("Computer", map.get("Computer")+1);
} else if (bookName.contains("Science")) {
map.put("Science", map.get("Science")+1);
} else if (bookName.contains("计算机")) {
map.put("计算机", map.get("计算机")+1);
} else if (bookName.contains("科学")) {
map.put("科学", map.get("科学") + 1);
}
}
}