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

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

代码实现:

原文地址:https://www.cnblogs.com/smartisn/p/10989038.html

时间: 2024-11-06 14:02:56

课堂测验-计算最长英语单词链的相关文章

计算最长英语单词链

日期:2019.6.7 博客期:085 星期五 经过了测试,我再一次的发现自己是有多么的菜鸡!唉~这么个破程序要写这么久,真是过分!我也是好久没写Java程序,手生了! 好了,说程序,这一个程序的最大限度是在文件的单词数不超过Integer的MAX值个,就可以运行了,也就是说大约24000000个单词,我测试的文件是1200000多行,直接报内存溢出了,我也明白是怎么回事!给大家看看我的代码. 代码上有注释,大家应该都看得懂! 1 package basic; 2 3 import java.i

成语接龙(英语单词链)

<构建之法>练习题 大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次.最长的定义是:最多单词数量,和单词中字母的数量无关. 例如, 文件里有: Apple Zoo Elephant Under Fox Dog Moon Leaf Tree Pseudopseudohypoparathyroidism   最长的相连英语单词串为:  apple - elephant – tre

【北航软件工程】最长单词链

Part.1 github链接 Part.2 PSP2.1 Personal Software Process Stages 预计耗时(分钟) 实际耗时(分钟) Planning 计划 15 10 PSP2.1 估计这个任务需要多少时间 15 10 Development 计划 1120 1360 · Analysis 需求分析 (包括学习新技术) 120 150 · Design Spec 生成设计文档 30 30 · Design Review 设计文档复审 10 10 · Coding S

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

课堂测试一:输出某个英文文本文件中26字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. HarryFre.java 1 package demo05; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.text.DecimalFormat; 7 import java.util.Array

48个国际英语音标发音表与英语单词的偏旁部首

英语48个国际音标表 元音 20个 单元音 前元音 [i?](一拖长) [?](一) [e] [æ] 中元音 [??](厄拖长) [?]( 厄) [?](啊) 后元音 [u?](屋拖长) [?]( 屋) [??](凹拖长) [?](凹) [ɑ?](啊拖长) 双元音 开合双元音 [e?](A) [a?](爱) [??]( 凹一) [a?](阿-屋) [??]( 欧) 集中双元音 [??](一厄) [e?]( 哀-厄) [??]( 屋-厄) 辅音 28个 爆破音 清辅音 [p] [t] [k] 浊辅

Java 第一次课堂测验

周一下午进行了开学来java第一次课堂测验,在课堂上我只完成了其中一部分,现代码修改如下: 先定义 ScoreInformation 类记录学生信息: 1 /** 2 * 信1805-1 3 * 胡一鸣 4 * 20183541 5 */ 6 public class ScoreInformation { 7 private String stunumber;//学号 8 private String name;//姓名 9 private double mathematicsscore;//高

【C】字符串的输入,求输入字符串中最长的单词

首先,基本目标很简单,就是利用C语言:编写一个函数,输入一行字符,将此行字符中的最长的单词输出. 代码如下: #include<stdio.h> void input(char s[]){ int i=0; for(int c;(c=getchar())!='\n';i++){ s[i]=c; } s[i]='\0';//读取完成,记得对这个字符数组封口 } char* findmax(char s[]){ int max=0,word_length=0,p=0,i=0;//这个p是用来记录最

谭浩强 C程序设计 8.10写一函数,输入一行字符,将此字符串中最长的单词输出。

代码量稍微一大,就会出现bug,浪费很多时间,继续努力. #include <stdio.h> void main(){ void maxLen(char str[50]); char str[50]; gets(str); maxLen(str); } void maxLen(char str[50]){ int i,j=1,t=-1,start=0,m; int maxNum(int num[50]); int num[50]={0}; num[0]=-1;//num[1]放第一个单词的长

草滩小恪与英语单词--弱爆的小程序

草滩小恪一直为如何学习英语而苦恼, 特别是单词的记忆.临近考试啦,草滩小恪想恶补一下英语单词, 但是草滩小恪又是very lazy 所以 草滩小恪就找到了草滩大学的历年英语考试卷, 想背一下 阅读 里面出现的高频词汇.草滩小恪认为这idea真TM太机智啦!!!. 但是, 很快草滩小恪就发现, 寻找短文里面的高频词汇真TN的不是人能干的事.那么问题来啦, 咋办呢? 机智的读者想必早已知道了咋办. 是的, 就是这么办的. 程序说明: 主要功能: 统计一篇英语文章里的高频词汇 附加功能:练习拼写这些高