《飘》英文版单词高频率出现单词-算法实现

飘的代码实现如下:

package shangke.disanzhou;  
  
import java.io.File;  
import java.io.InputStreamReader;  
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileInputStream;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.io.FileWriter;  
  
public class cin_txt {  
    
    
    
    
    
    
    public static void main(String args[]) {  
        int n=0;
        int flag;
        int m=0;
         String word[]=new String[100000];
         int sum[]=new int[100000];
         String hang[]=new String[1000];
         List<String> list;
         String w;
        int i=0;
        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  
  
            /* 读入TXT文件 */  
            String pathname = "H:\wenben.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  
            File filename = new File(pathname); // 要读取以上路径的input。txt文件  
            InputStreamReader reader = new InputStreamReader(  
                    new FileInputStream(filename));
            BufferedReader br = new BufferedReader(reader);  
            String line = "";  
            line = br.readLine();  
            while (line != null) {  
                //将文本文档中的单词与符号分离
                StringTokenizer st2 = new StringTokenizer(line, ",,., ,!,?,“,”,‘,-,'");
                 i=0;
                while (st2.hasMoreElements()) {
                    hang[i]=String.valueOf(st2.nextElement());
                    //hang[i]=(String) st2.nextElement();
                    hang[i]=hang[i].toLowerCase();
                    //System.out.println("************");
                    m++;
                     list = Arrays.asList(word);
                  flag = list.indexOf(hang[i]);
                    if(flag==-1)
                    {
                        word[n]=hang[i];
                        sum[n]++;
                        n++;
                    }
                    else
                    {
                        sum[flag]++;
                    }
                    //System.out.print(hang[i]+" ");
                    i++;
                }
               // System.out.println();
                
                //System.out.println("**********");
                //System.out.println(line);
                line = br.readLine(); // 一次读入一行数据 
            }  
  
            /* 写入Txt文件 */  
           /* File writename = new File("H:\wenben0.txt"); //相对路径,如果没有则要建立一个新的output。txt文件  
            writename.createNewFile(); // 创建新文件  
            BufferedWriter out = new BufferedWriter(new FileWriter(writename));  
            out.write("我会写入文件啦
"); // 
即为换行  
            out.flush(); // 把缓存区内容压入文件  
            out.close(); // 最后记得关闭文件 */ 
  
        } catch (Exception e) {  
            e.printStackTrace();  
        }
        
        int ma=0;
        int biao=0;
        for(int j=0;j<n-1;j++)
        {
            ma=sum[j];
            biao=j;
            w=word[j];
            for(int k=j+1;k<n;k++)
            {
                if(ma<sum[k])
                {
                    ma=sum[k];
                    biao=k;
                }
            }
            sum[biao]=sum[j];
            sum[j]=ma;
            word[j]=word[biao];
            word[biao]=w;
        }
        System.out.println("******************");
        //System.out.println(m);
       // System.out.println(n);
        //System.out.println("***********");
       /* for(int j=0;j<n;j++)
        {
            System.out.println(sum[j]);
            System.out.println(word[j]);
        }*/
        for(int j=0;j<10;j++)
        {
            System.out.println(sum[j]);
            System.out.println(word[j]);
        }
    }  
}  

其中最后的for循环可以根据自己需要改代码实现输出平频率最高的单词数

从txt文本文档中读取并且排出文本中单词,最重要的就是文本的导入和分离单词与各种符号的分离

原文地址:https://www.cnblogs.com/yizhixiaozhu/p/11693550.html