课堂练习——计算最长单词链

 

 

package letteron;

import java.io.*;
import java.util.*;


public class text1 {
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO 自动生成的方法存根

        File file = new File("D:/intext1.txt");
        File file2 = new File("D:/outtext.txt");


        if (!file.exists()) {
            System.out.println("文件不存在!");
        } else if (file.exists() && file.length() == 0) {
            System.out.println("文件为空!");
        } //判断是否文件为空
        else {
            BufferedReader br = new BufferedReader(new FileReader(file));
            BufferedWriter bw = new BufferedWriter(new FileWriter("D:/outtext.txt"));


            String s;
            int i, j;
            ArrayList<ArrayList<String>> listall = new ArrayList();
            String key;
            s = br.readLine();
            //将文本文件中的所有信息变为字符串
            String[] s1 = s.split("\\s+");//以空格为分割划分每个单词
            if (s1.length == 1)
                System.out.println("单词数为1");
            else {

                for (i = 0; i < s1.length; i++) {
                    System.out.println(s1[i]);
                }//测试录入

                for (j = 0; j < s1.length; j++) {
                    ArrayList<String> list = new ArrayList<String>();
                    key = s1[j].substring(s1[j].length() - 1);
                    list.add(s1[j]);
                    System.out.println("key:" + key);
                    for (i = 1; i < s1.length; i++) {

                        if (key.equals(s1[i].substring(0, 1))) {
                            list.add(s1[i]);
                            key = s1[i].substring(s1[i].length() - 1);
                        } else
                            continue;
                    }
                    listall.add(list);
                }
                int max = 0;
                int count = 0;

                for (i = 0; i < listall.size(); i++) {
                    if (max < listall.get(i).size()) {
                        max = listall.get(i).size();
                        count = i;
                    }
                }
                System.out.println("最长单词链为:");
                for (i = 0; i < listall.get(count).size(); i++) {
                    System.out.println(listall.get(count).get(i));
                    bw.write(listall.get(count).get(i));
                    bw.write(" ");
                }
                br.close();
                bw.close();
            }
        }
    }

}

思路:

1.首先将文件导入到数据流,分为输入文件和输出文件

2.判断文件是否存在

3.判断文件是否为空

4.将文件中文本转到字符串中

5.以空格为分割线划分每个单词

6.判断字符串长度,是1则输出长度为一,否则输出每个单词

7.新建数列,准备存储结果

8.循环判断每个单词首个字母和前一个最后一个字母是否相同,相同存入list中

9.判断那个list最长,并输出结果

posted @ 2023-03-02 18:51  花伤错零  阅读(16)  评论(0)    收藏  举报