本次作业要求参见: 20180918-1 词频统计 [https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126]
本次作业代码地址:https://coding.net/u/FanF/p/wf/git
1.控制台输入英文文本,读取文本内容。
String content = ""; String con = null;
while(content!=null){ content = bufferedReader.readLine(); if(content == null){ break; } if(content.equals("")){ continue; } count += getWord(content, map); System.out.println("该篇文章总字数为:"+count+"个");
检测单词中是否包含特殊字符,若有,则用""空串替代。
public static String checkIsHaveSpecial(String word) { String[] special= {",","(",")","-","*",""","?",".","—","=","+","","!","/","1","2","3" ,"4","5","6","7","8","9","0",":","$","@"," ","(",")"}; //特殊字符集 for(int i = 0;i<special.length;i++) { if(word.contains(special[i])) { word = word.replace(special[i],""); } } return word;
public static void sortMap(Map<String, Integer> map) { List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(map.entrySet()); //按照自定义的比较器对list进行排序,这里是对value值进行降序排序 Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() { public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); int i = 1; System.out.println("排名前十的单词分别为:"); for (Entry<String, Integer> e: list) { if(i<=10) { System.out.println("第"+i+"名:"+e.getKey()+" 数量:"+e.getValue()); i++; } else break; } }
2.控制台输入英文文本,统计单词和出现次数。调用getWord方法获取字母并添加到map中,并返回每一行的单词数,并相加。
public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); String content = ""; String con = null; con = sc.nextLine(); Map map = new TreeMap<String,Integer>(); int count = 0; count = getWord(con, map);
System.out.println("该篇文章总字数为:"+count+"个"); sortMap(map); }
3.选择文件,输入文件路径,读取文件。
public static void main(String[] args) throws Exception { String f; System.out.println("请输入文件路径:"); Scanner sc = new Scanner(System.in); f = sc.nextLine(); File file = new File(f);
4.从控制台输入英文单篇作品。
public static void main(String[] args) throws Exception { File file = new File("C:/book.txt"); BufferedReader bufferedReader = new BufferedReader(new FileReader(file),1024*1024*1); String content = ""; Map map = new TreeMap<String,Integer>(); int count = 0; while(content!=null){ content = bufferedReader.readLine(); if(content == null){ break; } if(content.equals("")){ continue; } count += getWord(content, map); } System.out.println("该篇文章总字数为:"+count+"个"); sortMap(map); }
程序做得少,框架来的很慢,在执行中有多次错误,很多小问题,花费了很多时间才修正,例如在里面查找文件夹目录里的小说时,没有注意txt的后缀问题,后来一点点排出才发现。
1.测试功能的实现
此项目PSP