计算最长英语单词链

用户需求:

英语的26 个字母的频率在一本小说中是如何分布的?

某类型文章中常出现的单词是什么?

某作家最常用的词汇是什么?

参考他人代码如下:

package longword;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
    public static int findwordlong(String text){
        String[] array = {".",",","?","!"};
        for (int i1 = 0; i1 < array.length; i1++) {
            text = text.replace(array[i1]," ");
        }
        String[] textArray = text.split(" ");
        return textArray.length;
    }
    public static String[] findword(String text){
        String[] array = {".",",","?","!","“","”"," "};
        for (int i1 = 0; i1 < array.length; i1++) {
            text = text.replace(array[i1]," ");
        }
        String[] textArray = text.split(" ");
        return textArray;
    }
    public static String readtxt(String txt) throws IOException
    {
        File file = new File(txt);//定义一个file对象,用来初始化FileReader
        FileReader reader = null;
        try {
            reader = new FileReader(file);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }//定义一个fileReader对象,用来初始化BufferedReader
        BufferedReader bReader = new BufferedReader(reader);//new一个BufferedReader对象,将文件内容读取到缓存
        StringBuilder sb = new StringBuilder();//定义一个字符串缓存,将字符串存放缓存中
        String s = "";
        while ((s =bReader.readLine()) != null) {//逐行读取文件内容,不读取换行符和末尾的空格
        sb.append(s);//将读取的字符串添加换行符后累加p存放在缓存中
        }
        bReader.close();
        String str = sb.toString();
        return str;
    }
    public static void appendMethodB(String fileName, String content) {
        try {
            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件,如果为 true,则将字节写入文件末尾处,而不是写入文件开始处 
            FileWriter writer = new FileWriter(fileName, true);
            writer.write(content);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static boolean judeFileExists(String txt) throws IOException {
        File file = new File(txt);
        if (!file.exists()) {
            System.out.println("文件不存在!");
               return false;
        } 
        else if(file.length() == 0)
        {
            System.out.println("文件为空!");
            return false;
        }
        String str=readtxt("input.txt");
        if(findwordlong(str)==1)
        {
            System.out.println("文件只有一个单词!");
               return false;
        }
        else
            {
                return true;
            }
   }
   public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        if(judeFileExists("input.txt"))
        {
            String str=readtxt("input.txt");
            int i;
            int l= findwordlong(str);
            String []word=new String[l];
            char []first=new char[l];
            char []tail=new char[l];
            word=findword(str);
            for(i=0;i<l;i++)
            {
                if(word[i].length()!=0)
            {
                first[i]=word[i].charAt(0);
                tail[i]=word[i].charAt(word[i].length()-1);
                System.out.println(word[i]);
            }
            }
            String stemp=word[0];
            appendMethodB("output.txt", word[0]);
            for(i=1;i<l;i++)
            {
                if(first[i]==stemp.charAt(stemp.length()-1))
                {
                    stemp=stemp+"-"+word[i];
                    appendMethodB("output.txt", "-"+word[i]);
                }
            }
            if(stemp.equals(word[0]))
            {
                System.out.println("没有首尾相接的单词!");
            }
            else{
                System.out.println(stemp);
            }
        }
    }
}

  

原文地址:https://www.cnblogs.com/shnm/p/11071721.html