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

Posted smartisn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课堂测验-计算最长英语单词链相关的知识,希望对你有一定的参考价值。

设计思想:先将单词都从文本中找出来,然后再建立两个数组,第一个放每一个单词的首字母,第二个放每一个单词的尾字母,然后根据这两个是否相同,放进一个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 

代码实现:

技术图片

 

以上是关于课堂测验-计算最长英语单词链的主要内容,如果未能解决你的问题,请参考以下文章

成语接龙(英语单词链)

单词接龙最长——6.6

只包含一个元音字母的最长的英语单词是哪个?

第十六周 项目4--英语单词的基数排序

第十六周 项目4--英语单词的基数排序

Java课堂测试——输出单个文件中的前N个最常出现的英语单词