2.27 总结
大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N 个不同的英语单词, 我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。
最长的定义是:最多单词数量,和单词中字母的数量无关。
1、统一输入文件名称:input1.txt, input2.txt
2、统一输出文件名称:output1.txt,output2.txt
3、程序需要考虑下列异常状况:
(1)例如,文件不存在,你的程序会崩溃么,还是能优雅地退出并给用户提示信息?
(2)如果文件没有任何单词、只有一个单词、没有可以首尾相连的单词,程序应该如何输出?
(3)如果输入文件有一万个单词,你的程序能多快输出结果?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | package word; import java.awt.geom.Area; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.OutputStream; public class dancilian { public static void main(String[] args) { dancilian a= new dancilian(); File file = new File( "E:/input1.txt" ); String b=a.read(file); String[] A =b.split( " " ); String[] f; String[] l; String[] end; f=a.first(A); l=a.last(A); end=a.jielong(A, l, f); for ( int i= 0 ;i< 3 ;i++) System.out.println(end[i]); try { a.write(end); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String[] first(String[] A) //返回首字母数组 { String[] F= new String[A.length]; for ( int i= 0 ;i<A.length;i++) { F[i]=A[i].substring( 0 , 1 ); } return F; } public String[] last(String[] A) //返回尾字母数组 { String[] L= new String[A.length]; for ( int i= 0 ;i<A.length;i++) { L[i]=A[i].substring(A[i].length()- 1 ); } return L; } public String[] jielong(String[] A,String[] L,String[] F) //获取接龙字母 { String[] end= new String[A.length]; int k= 0 ; end[ 0 ]=A[ 0 ]; for ( int j= 0 ;j<A.length;j++) { if ((end[k].substring(end[k].length()- 1 )).equals(F[j])) { //System.out.println(end[k].substring(end[k].length()-1)); end[++k]=A[j]; } } return end; } public String read(File file){ //读出文件 StringBuilder result = new StringBuilder(); try { BufferedReader br = new BufferedReader( new FileReader(file)); //构造一个BufferedReader类来读取文件 String s = null ; while ((s = br.readLine())!= null ){ //使用readLine方法,一次读一行 result.append(System.lineSeparator()+s); } br.close(); } catch (Exception e){ e.printStackTrace(); } return result.toString(); } public void write(String[] str) throws Exception{ //写入文件 //在d盘上创建一个名为testfile的文本文件 File f = new File( "E:/output1.txt" ); //用FileOutputSteam包装文件,并设置文件可追加 OutputStream out = new FileOutputStream(f, true ); //字符数组 //String[] str = {"shanghai","beijing","guangdong","xiamen"}; for ( int i= 0 ; i<str.length; i++){ out.write(str[i].getBytes()); //向文件中写入数据 out.write( '\r' ); // \r\n表示换行 out.write( '\n' ); } out.close(); //关闭输出流 System.out.println( "写入成功!" ); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用