课堂测验-计算最长英语单词链

设计思想:先将单词都从文本中找出来,然后再建立两个数组,第一个放每一个单词的首字母,第二个放每一个单词的尾字母,然后根据这两个是否相同,放进一个int数组中,调出来,就可以

代码实现:

  1 package txt读入;
  2 
  3 import java.io.BufferedWriter;
  4 import java.io.File;
  5 import java.io.FileReader;
  6 import java.io.FileWriter;
  7 import java.io.IOException;
  8 
  9 public class Max {
 10 public static void main(String[] args)throws IOException {
 11     Word word=new Word();                                      //单词的链头
 12     Word lian,xin;                                             
 13     String str="";
 14     File f1=new File("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\飘英文版.txt");      
 15     if(!f1.exists())
 16     {
 17         System.out.println("文件不存在");
 18     }
 19     else
 20         {FileReader f=new FileReader("E:\\578095023\\FileRecv\\软件工程\\课堂测试\\飘英文版.txt");                //读取英文文件
 21     
 22     
 23     char[] c=new char[1];                                 //每次读取一个字母
 24     int b=0;
 25     boolean exist=false;                              //判断单词是否存在于  word 链中
 26    
 27     BufferedWriter writer2 = new BufferedWriter(new FileWriter(new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\output1.txt"),true));
 28 
 29     
 30     File writeName=new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\output1.txt");
 31     String S1="";
 32     String S2="";
 33     writeName.createNewFile();
 34   
 35     int num1=0;
 36     int num2=0;
 37     int[] Num1=new int[1000000];
 38     int[] Num2=new int[1000000];
 39     
 40     
 41     
 42     while((b=f.read(c))!=-1)                              //每次读取一个字母直到最后
 43     {
 44         int i1=1;
 45         //如果字符为  换行、空格、单引号、双引号、逗号、句号  则为一个单词的结束及另一个单词的开始
 46         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("'"))
 47         {
 48             lian=word;
 49             while(lian!=null)            
 50             {
 51                 if(lian.value.equalsIgnoreCase(str))           //如果单词在单词链中存在,则单词个数++
 52                 {
 53                     lian.geshu++;exist=true;break;
 54                 }
 55                 else
 56                 {
 57                     if(i1==1)
 58                     {
 59                         
 60                     
 61                     Num1[num1]=num1;
 62                     
 63                     String ss=str.substring(0, 1);
 64                     
 65                     S1=S1+ss;
 66                     num1=num1+1;
 67                     }
 68                     
 69                     if(i1==1)
 70                     {
 71                         Num2[num2]=num2;
 72                         String ss=str.substring(str.length()-1, str.length());
 73                         
 74                         S2=S2+ss;
 75                         num2=num2+1;
 76                     }
 77                     
 78                     
 79                     i1=i1+1;
 80                     lian=lian.next;
 81                 }
 82             }
 83             if(exist==false)                        //如果不存在,则在单词链中添加
 84             {
 85                 xin=new Word(str,1);
 86                 xin.next=word.next;
 87                 word.next=xin;
 88                 str="";
 89             }
 90             else
 91             {
 92                 exist=false;
 93                 str="";
 94             }
 95         }
 96         else                                      //单词
 97         {
 98             str+=String.valueOf(c);
 99         }
100         
101     }
102     
103     if(num1==1)
104     {
105         System.out.println("只有一个单词");
106     }
107     else {
108     
109         if(num1==0)
110         {
111             System.out.println("没有单词");
112         }
113         
114         
115         else {
116         
117         
118     System.out.println(S1);
119     System.out.println(S2);
120     
121     System.out.println(num1);
122     for(int im=0;im<num1;im++)
123     {
124         String s1=S1.substring(im, im+1);
125         int ii=1;
126         for(int in=0;in<num1;in++)
127         {
128             
129             String s2=S2.substring(in, in+1);
130             
131             int n1=Num1[im];
132             int n2=Num2[im];
133             
134             if(!s1.equals(s2))
135             {
136                 System.out.println("没有首尾相连单词");
137             }
138                 
139                 
140             if(s1.equals(s2))
141             {
142                 
143                 
144                 
145                 
146                 int N=20;
147                 for(int i=1;i<=10;i++)                   
148                 {
149                     xin=new Word("",0);
150                     lian=word.next;
151                     //找到单词链中个数最多的
152                     while(lian!=null)
153                     {
154                         
155                             xin=lian;
156                         
157                         lian=lian.next;
158                     }
159                     int m=n1-1;
160                     if(i==n1-1)
161                     {
162                         
163                          System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
164                     
165                          try  {
166                              
167                              BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\output1.txt"),true));
168                              writer.write("\n"+xin.value);
169                              writer.close();
170 
171                                 
172                             }
173                          catch (IOException e) {
174                             e.printStackTrace();
175                         }
176             
177                     
178                     }
179 //                    if(i==m)
180 //                    {
181 //                         System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
182 // try  {
183 //                             
184 //                             BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\output1.txt"),true));
185 //                             writer.write("\n"+xin.value);
186 //                             writer.close();
187 //
188 //                                
189 //                            }
190 //                         catch (IOException e) {
191 //                            e.printStackTrace();
192 //                        }
193 //                    
194 //                    }
195 //                    if(i==m)
196 //                    {
197 //                         System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
198 // try  {
199 //                             
200 //                             BufferedWriter writer = new BufferedWriter(new FileWriter(new File("E:\\\\578095023\\\\FileRecv\\\\软件工程\\\\课堂测试\\\\output1.txt"),true));
201 //                             writer.write("\n"+xin.value);
202 //                             writer.close();
203 //
204 //                                
205 //                            }
206 //                         catch (IOException e) {
207 //                            e.printStackTrace();
208 //                        }
209 //                    
210 //                    }
211                     //输出单词链中个数最多的
212                    
213                     lian=word;
214                     //删除单词链中单词个数最多的
215                     while(lian.next!=null)
216                     {
217                         if(lian.next.value.equalsIgnoreCase(xin.value))
218                         {
219                             lian.next=lian.next.next;
220                             break;
221                         }
222                         lian=lian.next;
223                     }
224                 }
225                 
226             }
227         }
228         
229         ii=ii+1;
230         
231         
232     }
233     
234     
235     
236 //    int N=20;
237 //    for(int i=1;i<=N;i++)                   
238 //    {
239 //        xin=new Word("",0);
240 //        lian=word.next;
241 //        //找到单词链中个数最多的
242 //        while(lian!=null)
243 //        {
244 //            if(lian.geshu>xin.geshu)
245 //            {
246 //                xin=lian;
247 //            }
248 //            lian=lian.next;
249 //        }
250 //        //输出单词链中个数最多的
251 //        System.out.println("第"+i+"个 :"+xin.value+"个数:"+xin.geshu);
252 //        lian=word;
253 //        //删除单词链中单词个数最多的
254 //        while(lian.next!=null)
255 //        {
256 //            if(lian.next.value.equalsIgnoreCase(xin.value))
257 //            {
258 //                lian.next=lian.next.next;
259 //                break;
260 //            }
261 //            lian=lian.next;
262 //        }
263 //    }
264         }
265     }
266     
267         }
268 }
269 }

代码实现:

 

posted @ 2019-06-07 19:51  博二爷  阅读(225)  评论(2编辑  收藏  举报