成语接龙(英语单词链)_weixin

关注
成语接龙(英语单词链)_weixinwww.shan-machinery.com

《构建之法》练习题

大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词中字母的数量无关。

例如, 文件里有:

Apple

Zoo

Elephant

Under

Fox

Dog

Moon

Leaf

Tree

Pseudopseudohypoparathyroidism

 

最长的相连英语单词串为:  apple - elephant – tree,  输出到文件里面,是这样的:

              Apple

              Elephant

              Tree

 

追加:判断文件不存在,文件无单词,文件一个单词,文件中无关联的(文件一个单词是其特殊情况)

在文本input.txt中取出单词,在outout.txt显示最长的相连英语单词串

任务分解:先行判断文件是否存在

不存在->显示错误

存在->取出单词存于内存中->判断单词数是否为一个

一个->显示错误

不是一个->判断相连英语单词(持续)(有一个判断是否重复的代码判断)->导出最长的相连英语单词串

我的所有错误在控制台的输出都注释掉了,改成在文本里显示

代码:

package 六月六号;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test1 {public static void main(String[] args) throws IOException {// TODO 自动生成的方法存根String filename ="D://dada.txt";Filea=newFile(filename);Filefile=newFile("D://output.txt");long startTime = System.currentTimeMillis(); //judeFileExists(a); if(judeFileExists(a)){danci(filename);} else{ try {FileWriter fw =new FileWriter(file);fw.write("无此文件");fw.flush();fw.close();}catch (IOException e) { e.printStackTrace(); }} long endTime = System.currentTimeMillis();//获取结束时间 System.out.println("程序运行时间:" + (endTime - startTime) + "ms");//输出程序运行时间}public static void danci(String s) throws IOException { BufferedReader br = new BufferedReader(new FileReader(s));StringBuffer sb = new StringBuffer();String text = null;while ((text = br.readLine()) != null) {sb.append(text);// 将读取出的字符追加到stringbuffer中}br.close(); // 关闭读入流String str = sb.toString().toLowerCase(); // 将stringBuffer转为字符并转换为小写String[] words = str.split("[^(a-zA-Z)]+"); // 非单词的字符来分割,得到所有单词StringBuffer yao = new StringBuffer();String b1=words[0];yao.append(b1);yao.append(" ");//System.out.println(b1);if(b1.equals("")){System.out.println("文件为空");yao.append("文件为空");}else{if(words.length==1){System.out.println("只有一个单词");} String end=b1.substring(b1.length()-1,b1.length()); // System.out.println(end); for(int i=1;ihttps://www.shan-machinery.com