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();
}
}
}