一、作业要求
在一个txt文件中统计其中出现最多的10词语,最好可以统计中文词语
二、实现方法
首先,建立一个word类,其中这个类的对象有两个属性,其中这个词语的值,以及这个值出现的次数。首先把这个文件中的所有的内容传输到一个缓存当中,然后每输出一个字母就存储到一个str中,当出现各种符号,以及空格的时候就认为这个单词的读取结束!建立word,lian两个链,然后每输出一个单词,就存储在word当中,然后指向下一个,同时把word的值赋给lian,并判断是否存在相同的单词,存在的话,就把这个单词的个数加一,没有的话就赋在这个lian的后面。当所有的单词以及单词的个数都已经存储好了之后,就将前10个词语输出。
三、源代码
package sum;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
class Word //定义单词类
{
String value; //具体的单词
int geshu; //出现的个数
Word next; //将单词链起来
public Word(String value,int geshu) //带参构造函数
{
this.value=value;
this.geshu=geshu;
next=null;
}
public Word() //空构造函数
{
this.value="";
this.geshu=0;
next=null;
}
}
public class r {
public static void main(String args[]) throws IOException //主函数
{
Word word=new Word(); //单词的链头
Word lian,xin;
String str="";
FileReader f=new FileReader("d:/text.txt"); //读取英文文件
char[] c=new char[1]; //每次读取一个字母
int b=0;
boolean exist=false; //判断单词是否存在于 word 链中
while((b=f.read(c))!=-1) //每次读取一个字母直到最后
{
//如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始
if(String.valueOf(c).equals("r")||String.valueOf(c).equals("n")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'"))
{ lian=word;
while(lian!=null)
{
if(lian.value.equals(str)) //如果单词在单词链中存在,则单词个数++
{
lian.geshu++;exist=true;break;
}
else
{
lian=lian.next;
}
}
if(exist==false) //如果不存在,则在单词链中添加
{
xin=new Word(str,1); xin.next=word.next;
word.next=xin;
str="";
}
else {
exist=false;
str="";
}
}
else //单词
{
str+=String.valueOf(c);
}
}
// 循环10次
for(int i=1;i<=10;i++)
{
xin=new Word("",0);
lian=word.next;
//找到单词链中个数最多的
while(lian!=null)
{
if(lian.geshu>xin.geshu)
{
xin=lian;
}
lian=lian.next;
}
//输出单词链中个数最多的
System.out.println("弟"+i+"个 :"+xin.value+"个数:"+xin.geshu);
lian=word;
//删除单词链中单词个数最多的
while(lian.next!=null)
{
if(lian.next.value.equals(xin.value)) {
lian.next=lian.next.next;
break;
}
lian=lian.next;
}
}
}
}
四、实验测试
五、实验结果
六、实验不足
1.这个实验的目的是统计最常出现的10个词语,想这些人称词语就可以不出现,在筛选的时候可以增加一些约束条件,把这些词语删除。
2.对于汉字来说,实现方法有点困难,自己还是没有想到方法来实现,在以后的学习之中还是要努力,加强各方面的能力。