今天下午软件工程两节课的教导让我受益匪浅,程序=数据结构+算法,这告诉我们编程主要注重的是思想,其次才是写代码,写代码我们多加练习总是能够写出来的,但我们要是缺少了解决问题的思想,那么你连写代码的前提都没有。正如今天下午的课堂测试:
拿到题目的第一时间我们首先应该思考如何做这个程序,而不是直接开始编码,更不能去抄别人的代码
以下是我的思路:
1.以空格为划分将单词存入数组
2.将单词的首位和末位分别存入数组
3.将末位和下一个单词的首位进行比较,如果相同存入数组
4.继续比较遇见不同的,从不同开始相同的单词存入新数组
5.新数组遇见不同时比较两数组长度,长度短的数组清空
6.重复3,4,5步骤直到筛选出最长单词链
7.将最长链存入数组
源码:
1 package English; 2 3 import java.io.*; 4 import java.util.*; 5 6 7 8 9 public class word { 10 11 public static void main(String[] args)throws FileNotFoundException, IOException { 12 // TODO 自动生成的方法存根 13 14 File file=new File("C:/Users/wuwang/OneDrive/桌面/123.txt"); 15 16 if(!file.exists()) 17 { 18 System.out.println("文件不存在!"); 19 } 20 else if(file.exists() && file.length() == 0) { 21 System.out.println("文件为空!"); 22 } //判断是否文件为空 23 else 24 { 25 BufferedReader br=new BufferedReader(new FileReader(file)); 26 BufferedWriter bw = new BufferedWriter(new FileWriter("C:/Users/wuwang/OneDrive/桌面/output3881.txt")) ; 27 28 29 String s; 30 int i,j; 31 ArrayList<ArrayList<String>> listall=new ArrayList(); 32 String key; 33 int m=0; 34 s=br.readLine(); 35 //将文本文件中的所有信息变为字符串 36 String []s1=s.split(" ");//以空格为分割划分每个单词 37 String s2= new String(); 38 if(s1.length==1) 39 System.out.println("单词数为1"); 40 else 41 { 42 for(i=0;i<s1.length;i++) 43 { 44 System.out.println(s1[i]); 45 } 46 for(j=0,i=j+1;j<s1.length;j++,i++) 47 { 48 ArrayList<String> list=new ArrayList<String>(); 49 key=s1[j].substring(s1[j].length()-1); 50 51 list.add(s1[j]); 52 System.out.println("key:"+key); 53 for(i=1;i< s1.length;i++) { 54 if (key.equals(s1[i].substring(0, 1))) { 55 list.add(s1[i]); 56 key = s1[i].substring(s1[i].length() - 1); 57 s2=list.toString(); 58 System.out.println(s2); 59 }else{ 60 continue; 61 } 62 } 63 64 listall.add(list); 65 } 66 int max=0; 67 int count=0; 68 69 for(i=0;i<listall.size();i++) 70 { 71 if(max<listall.get(i).size()) 72 { 73 max=listall.get(i).size(); 74 count=i; 75 } 76 } 77 System.out.println("最长单词链为:"+listall.get(count).size()); 78 for(i=0;i<listall.get(count).size();i++) 79 { 80 System.out.println(listall.get(count).get(i)); 81 bw.write(listall.get(count).get(i)); 82 bw.write(" "); 83 } 84 br.close(); 85 bw.close(); 86 } 87 } 88 } 89 }
此代码存在问题,遇见不同的单词不能跳出循环!后续还需要加以改进。
标签:总结,星期一,s1,第三周,数组,单词,key,new,String From: https://www.cnblogs.com/sgle0722/p/17162366.html