基於java:讀寫一個英文的txt文件,記錄單詞個數,並輸出十個出現最多的單詞及出現的個數;


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM