思路:
- 确定要用BufferedReadered----->read()方法
- 其次因为要统计英文出现的次数,所有想到key-value对应关系,这里我们需要HashMap集合来存储。
- 迭代器遍历后,用HashMap.contains()方法判断集合中是否包含该字母,如果有,则在原有的字母个数上+1,如果没有,那么把该字母用put()加入集合,同时将该字母的value值设置为1。
`
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class WorkCount {
public static void main(String[] args) {
BufferedReader reader = null;
HashMap<Character, Integer> map = new HashMap<>();
try {
reader = new BufferedReader(
new FileReader("D:\\Java\\上课代码\\JavaTest\\src\\jvm\\TestDemo.java"));
int a = -1;
while ((a = reader.read()) != -1) {
if ((a >= 65 && a <= 90) || (a >= 97 && a <= 122)) {
char c = (char) a;
if (map.containsKey(c)) {
int num = map.get(c);
num++;
map.replace(c, num);
} else {
map.put(c, 1);
}
}
}
Iterator<Map.Entry<Character, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Character, Integer> next = iterator.next();
System.out.println("key: " + next.getKey() + " value:" + next.getValue());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
reader = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}