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("\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("'"))
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、注意文本的換行為\r\t
3、注意判斷單詞是否存在時的處理
4、注意讀寫文件部分