词频项目
github:https://github.com/zhonghongyao/WordSplit.git
1.需求分析
使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发。软件基本功能要求如下:
1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。
2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。
3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。
4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。
5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件words.txt。
2. 功能设计
利用java的输入输出实现对文本文件的读取、利用map3.测试
4.代码块
while ((line = br.readLine()) != null) {
switch (count){
case 1:String strSource[]=line.split(" ");
for (int i = 0; i < strArray.length; i++) {
for (int j = 0; j < strSource.length; j++) {
if(strArray[i].equals(strSource[j])){
arrCount[i]++;
}
}
}
default:String strAll[]=line.split(" ");
for (int i = 0; i <strAll.length ; i++) {
if(map.size()==0){
map.put(strAll[i],1);
continue;
}
int size=map.size();
boolean flag=false;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if(entry.getKey().equals(strAll[i])){
int temp=entry.getValue();
entry.setValue(++temp);
flag=true;
}
}
if(flag==false){
map.put(strAll[i],1);
}
}
break;
}
}
//输出
if(count==1){
for (int i = 0; i <strArray.length ; i++) {
System.out.print(strArray[i]+"-----数量:"+arrCount[i]+" ");
//柱形图
}
}else if(count==2){
Map<String,Integer>mapResult=MapSort.sortMapByValue(map);
for (Map.Entry<String, Integer> entry : mapResult.entrySet()) {
if(k==0){
break;
}else {
System.out.println("单词= " + entry.getKey() + " 数量= " + entry.getValue());
k--;
}
}
}else if(count==3){
Map<String,Integer>mapRe= MapSort.sortMapByValue(map);
writeFile(mapRe);
}
} catch (IOException e) {
e.printStackTrace();
}
}