判断动词 形态的初实现

遇到的问题:txt不区分大小写然而主文本区分,很是不知为何

另一个问题,可解决就是目前一个动词放在一个txt下一步只需要针对第一个单词进行int i来判断是不是第一个,然后再整合

  1 Scanner scan=new Scanner(System.in);
  2     Word word=new Word();                                      //单词的链头
  3     Word lian,xin;                                             
  4     String str="";
  5     FileReader f=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\读入txt\\飘英文版.txt");                //读取英文文件 
  6     char[] c=new char[1];                                 //每次读取一个字母
  7     int b=0;
  8     boolean exist=false;                              //判断单词是否存在于  word 链中
  9     Word word1=new Word();
 10     Word lian1,xin1;
 11     String str1="";
 12     FileReader f1=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\读入txt\\stopwords.txt");   
 13     char[] c1=new char[1];
 14     int b1=0;
 15     boolean exist1=false;
 16     Word word2=new Word();
 17     Word lian2,xin2;
 18     String str2="";
 19     FileReader f2=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\读入txt\\take.txt");   
 20     char[] c2=new char[1];
 21     int b2=0;
 22     boolean exist2=false;
 23     //stopwords文本
 24      while((b1=f1.read(c1))!=-1)                              //每次读取一个字母直到最后
 25         {
 26             //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
 27             if(String.valueOf(c1).equals("\r")||String.valueOf(c1).equals("\n")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals("\"")||String.valueOf(c1).equals("'"))
 28             {
 29                 
 30                 lian1=word1;
 31                 while(lian1!=null)            
 32                 {
 33 
 34                     if(lian1.value.equalsIgnoreCase(str1))           //如果单词在单词链中存在,则单词个数++
 35                     {
 36                         lian1.geshu++;exist1=true;break;
 37                     }
 38                     else
 39                     {
 40                         lian1=lian1.next;
 41                     }
 42                     
 43                 }
 44 
 45                 if(exist1==false)                        //如果不存在,则在单词链中添加
 46                 {
 47                     xin1=new Word(str1,1);
 48                     xin1.next=word1.next;
 49                     word1.next=xin1;
 50                     str1="";
 51                 }
 52                 else
 53                 {
 54                     exist1=false;
 55                     str1="";
 56                 }
 57             }
 58             else                                      //单词
 59             {
 60                 str1+=String.valueOf(c1);
 61             }
 62         }
 63      while(true)
 64      {
 65          xin1=new Word("",0);
 66             lian1=word1.next;
 67             //找到单词链中个数最多的
 68             while(lian1!=null)
 69             {
 70                System.out.println(lian1.value);
 71                 lian1=lian1.next;
 72             }       
 73          if(lian1==null)
 74          {
 75              break;
 76          }
 77      }
 78      System.out.println("如果需要增加 请输入1,否则输入0");
 79      int shu=0;
 80      shu=scan.nextInt();
 81      if(shu==1)
 82      {
 83          add();
 84          while((b1=f1.read(c1))!=-1)                              //每次读取一个字母直到最后
 85             {
 86                 //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
 87                 if(String.valueOf(c1).equals("\r")||String.valueOf(c1).equals("\n")||String.valueOf(c1).equals(" ")||String.valueOf(c1).equals(",")||String.valueOf(c1).equals(".")||String.valueOf(c1).equals("\"")||String.valueOf(c1).equals("'"))
 88                 {
 89                     
 90                     lian1=word1;
 91                     while(lian1!=null)            
 92                     {
 93 
 94                         if(lian1.value.equalsIgnoreCase(str1))           //如果单词在单词链中存在,则单词个数++
 95                         {
 96                             lian1.geshu++;exist1=true;break;
 97                         }
 98                         else
 99                         {
100                             lian1=lian1.next;
101                         }
102                         
103                     }
104 
105                     if(exist1==false)                        //如果不存在,则在单词链中添加
106                     {
107                         xin1=new Word(str1,1);
108                         xin1.next=word1.next;
109                         word1.next=xin1;
110                         str1="";
111                     }
112                     else
113                     {
114                         exist1=false;
115                         str1="";
116                     }
117                 }
118                 else                                      //单词
119                 {
120                     str1+=String.valueOf(c1);
121                 }
122             }
123          while(true)
124          {
125              xin1=new Word("",0);
126                 lian1=word1.next;
127                 //找到单词链中个数最多的
128                 while(lian1!=null)
129                 {
130                    System.out.println(lian1.value);
131                     lian1=lian1.next;
132                 }       
133              if(lian1==null)
134              {
135                  break;
136              }
137          }
138      }
139     //动态文本
140      while((b2=f2.read(c2))!=-1)                              //每次读取一个字母直到最后
141         {
142             //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
143             if(String.valueOf(c2).equals("\r")||String.valueOf(c2).equals("\n")||String.valueOf(c2).equals(" ")||String.valueOf(c2).equals(",")||String.valueOf(c2).equals(".")||String.valueOf(c2).equals("\"")||String.valueOf(c2).equals("'"))
144             {
145                 
146                 lian2=word2;
147                 while(lian2!=null)            
148                 {
149 
150                     if(lian2.value.equalsIgnoreCase(str2))           //如果单词在单词链中存在,则单词个数++
151                     {
152                         lian2.geshu++;exist2=true;break;
153                     }
154                     else
155                     {
156                         lian2=lian2.next;
157                     }
158                     
159                 }
160 
161                 if(exist2==false)                        //如果不存在,则在单词链中添加
162                 {
163                     xin2=new Word(str2,1);
164                     xin2.next=word2.next;
165                     word2.next=xin2;
166                     str2="";
167                 }
168                 else
169                 {
170                     exist2=false;
171                     str2="";
172                 }
173             }
174             else                                      //单词
175             {
176                 str2+=String.valueOf(c2);
177             }
178         }
179      while(true)
180      {
181          xin2=new Word("",0);
182             lian2=word2.next;
183             //找到单词链中个数最多的
184             while(lian2!=null)
185             {
186                System.out.println(lian2.value);
187                 lian2=lian2.next;
188             }       
189          if(lian2==null)
190          {
191              break;
192          }
193      }
194     
195      //飘文本
196     while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
197     {
198         //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
199         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("'"))
200         {
201             
202             lian=word;
203             while(lian!=null)            
204             {
205 
206                 if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
207                 {
208                     lian.geshu++;exist=true;break;
209                 }
210                 else
211                 {
212                     int l1=0,l2=0;
213                     while(true)
214                     {
215                         xin1=new Word("",0);
216                            lian1=word1.next;
217                            //找到单词链中个数最多的
218                            while(lian1!=null)
219                            {
220                               if(str.equals(lian1.value))
221                               {
222                                   l1=1;
223                               }
224                                lian1=lian1.next;
225                                
226                            }       
227                         if(lian1==null)
228                         {
229                             break;
230                         }
231                     }
232                     
233                     if(l1==1)
234                     {
235                         break;
236                     }
237                     lian=lian.next;
238                 }
239                 
240             }
241 
242             if(exist==false)                        //如果不存在,则在单词链中添加
243             {
244                 while(true)
245                    {
246                        xin2=new Word("",0);
247                           lian2=word2.next;
248                           //找到单词链中个数最多的
249                           while(lian2!=null)
250                           {
251                              if(str.equals(lian2.value))
252                              {
253 
254                                  str="she";
255                              }
256                               lian2=lian2.next;
257                               
258                           }       
259                        if(lian2==null)
260                        {
261                            break;
262                        }
263                    }
264                 xin=new Word(str,1);
265                 xin.next=word.next;
266                 word.next=xin;
267                 str="";
268             }
269             else
270             {
271                 exist=false;
272                 str="";
273             }
274         }
275         else                                      //单词
276         {
277             str+=String.valueOf(c);
278         }
279     }
280     
281     
282     //   循环10次
283     System.out.println("请输入您想查询的前几个出现此处最多的单词");
284     int N=scan.nextInt();
285     for(int i=1;i<=N;i++)                   
286     {
287         xin=new Word("",0);
288         lian=word.next;
289         //找到单词链中个数最多的
290         while(lian!=null)
291         {
292             if(lian.geshu>xin.geshu)
293             {
294                 xin=lian;
295             }
296             lian=lian.next;
297         }
298         //输出单词链中个数最多的
299         System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
300         lian=word;
301         //删除单词链中单词个数最多的
302         while(lian.next!=null)
303         {
304             if(lian.next.value.equalsIgnoreCase(xin.value))
305             {
306                 lian.next=lian.next.next;
307                 break;
308             }
309             lian=lian.next;
310         }
311     }
312 }

 

posted @ 2019-05-12 12:18  博二爷  阅读(240)  评论(0编辑  收藏  举报