import java.util.ArrayList; import java.util.List; public class Chain { private static int chaincount = 0; private static char startal; private static char cuendal; private static List<ChainBean> chainlist = new ArrayList<ChainBean>(); private static FileIOStream fileios = new FileIOStream(); private static List<String> strlist =null; public static void main(String [] args) { /* * 读取文件到strlist * 遍历strlist,以非单词字符为间隔,存储到string变量word里,word首字母startal * 遍历ChainList,若有endal=startal,则添加到其wordlist。若无,则add一个ChainList * 找出最长的ChainList,储存到文件 */ if(fileios.readFile()) { strlist = fileios.getStrlist(); System.out.println("file read end"); for(int i = 0 ; i < strlist.size() ; i++) { String s = strlist.get(i); extractWord(s); } selectLongChain(); } } private static void extractWord(String s) { System.out.println("extract word start"); int t = 0; String word = ""; for(int j=0; j<s.length(); j++) { char c = s.charAt(j); boolean al = (((c>=65)&&(c<=90))||((c>=97)&&(c<=122))); System.out.println("c = "+c+" , al = "+al); if((t==0)&&al) { startal = c; System.out.println("the new word startal = "+startal); t = 1; } if((t==1)&&al) { cuendal = c; word += c; } if((t==1)&&!al) { System.out.println("extract word : "+word); judgeStartAl(word); } } System.out.println("extract word :"+word); judgeStartAl(word); System.out.println("extract word end"); } private static void judgeStartAl(String word) { System.out.println("judge startal start"); int t=0; for(int i=0;(chaincount != 0)&&( i < chainlist.size())&&(t==0);i++) { System.out.println("current endal = "+chainlist.get(i).getEndal()+" , and the statral = "+startal); if((chainlist.get(i).getEndal() == startal)||chainlist.get(i).getEndal() == (startal + 32)) { System.out.println("insert word "+word); chainlist.get(i).addWordlist(word); chainlist.get(i).setEndal(cuendal); t = 1; } } if(t==0) { System.out.println("add word "+word+" in a new chain"); System.out.println("word = "+word); List<String> wordlist = new ArrayList<String>(); wordlist.add(word); ChainBean chainbean = new ChainBean(wordlist,cuendal); System.out.println("the new chain endal = "+cuendal); chainlist.add(chainbean); chaincount++; } } private static void selectLongChain() { int max = 0; int t = 0; for(int i=0; i<chainlist.size();i++) { int length = chainlist.get(i).getWordlist().size(); if(max < length) { max = length; t = i; } } if(chaincount != 0) { fileios.writeFile(chainlist.get(t).getWordlist()); } else { System.out.println("the file is null"); } } }
import java.util.List; public class ChainBean { private List<String> wordlist; private char endal; public ChainBean(List<String> wordlist,char endal) { this.wordlist = wordlist; this.endal = endal; } public List<String> getWordlist() { return wordlist; } public void addWordlist(String word) { wordlist.add(word); } public char getEndal() { return endal; } public void setEndal(char endal) { this.endal = endal; } }
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FileIOStream { String filename = "E:\Homework\大二下\软工\input1.txt"; String filename2 = "E:\Homework\大二下\软工\output1.txt"; List<String> strlist = new ArrayList<String>(); public void setStrlist(List<String> strlist) { this.strlist = strlist; } public List<String> getStrlist() { return strlist; } public boolean readFile() { boolean fileexists = true;; File file = new File(filename); if(!file.exists()) { System.out.println("文件不存在"); fileexists = false; return fileexists; } String s = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader(filename)); while((s = br.readLine()) != null) { strlist.add(s); } System.out.println("文件读取成功"); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { br.close(); }catch(Exception e) { e.printStackTrace(); } } return fileexists; } public void writeFile(List<String> wordlist) { File file = new File(filename2); try { file.createNewFile(); try (FileWriter writer = new FileWriter(file); BufferedWriter out = new BufferedWriter(writer) ) { for(int j = 0 ; j < wordlist.size() ; j++) { String s = wordlist.get(j); out.write(s+" "); } out.flush(); // 把缓存区内容压入文件 System.out.println("文件写入成功"); } } catch (IOException e) { e.printStackTrace(); } } }