1 import java.io.FileNotFoundException;
2 import java.io.FileReader;
3 import java.io.IOException;
4
5 class Word //定义单词类
6 {
7 String value; //具体的单词
8 int geshu; //出现的个数
9 Word next; //将单词链起来
10 public Word(String value,int geshu) //带参构造函数
11 {
12 this.value=value;
13 this.geshu=geshu;
14 next=null;
15 }
16 public Word() //空构造函数
17 {
18 this.value="";
19 this.geshu=0;
20 next=null;
21 }
22 }
23 public class r {
24 public static void main(String args[]) throws IOException //主函数
25 {
26 Word word=new Word(); //单词的链头
27 Word lian,xin;
28 String str="";
29 FileReader f=new FileReader("d:/text.txt"); //读取英文文件
30 char[] c=new char[1]; //每次读取一个字母
31 int b=0;
32 boolean exist=false; //判断单词是否存在于 word 链中
33 while((b=f.read(c))!=-1) //每次读取一个字母直到最后
34 {
35 //如果字符为 换行、空格、单引号、双引号、逗号、句号 则为一个单词的结束及另一个单词的开始
36 if(String.valueOf(c).equals("
")||String.valueOf(c).equals("
")||String.valueOf(c).equals(" ")||String.valueOf(c).equals(",")||String.valueOf(c).equals(".")||String.valueOf(c).equals(""")||String.valueOf(c).equals("'"))
37 {
38 lian=word;
39 while(lian!=null)
40 {
41 if(lian.value.equalsIgnoreCase(str)) //如果单词在单词链中存在,则单词个数++
42 {
43 lian.geshu++;exist=true;break;
44 }
45 else
46 {
47 lian=lian.next;
48 }
49 }
50 if(exist==false) //如果不存在,则在单词链中添加
51 {
52 xin=new Word(str,1);
53 xin.next=word.next;
54 word.next=xin;
55 str="";
56 }
57 else
58 {
59 exist=false;
60 str="";
61 }
62 }
63 else //单词
64 {
65 str+=String.valueOf(c);
66 }
67 }
68 // 循环10次
69 for(int i=1;i<=10;i++)
70 {
71 xin=new Word("",0);
72 lian=word.next;
73 //找到单词链中个数最多的
74 while(lian!=null)
75 {
76 if(lian.geshu>xin.geshu)
77 {
78 xin=lian;
79 }
80 lian=lian.next;
81 }
82 //输出单词链中个数最多的
83 System.out.println("弟"+i+"个 :"+xin.value+"个数:"+xin.geshu);
84 lian=word;
85 //删除单词链中单词个数最多的
86 while(lian.next!=null)
87 {
88 if(lian.next.value.equalsIgnoreCase(xin.value))
89 {
90 lian.next=lian.next.next;
91 break;
92 }
93 lian=lian.next;
94 }
95 }
96 }
97 }
思路:读写文件,
运用链表思想
通过空格、换行等字符设为单词的区分
每次通过遍历链表来查询链表中该单词是否已经存在
若存在,则单词个数加1;否则,在链表中添加此新单词
直到将文件读取完
查询次数最多的单词时
查询一个,则将此时最多的那个单词从链表中删除
注意:1、链表通过 类中的对象成员来链接
2、注意文本的换行为
3、注意判断单词是否存在时的处理
4、注意读写文件部分