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、注意讀寫文件部分