《飘》英文版单词高频率出现单词-算法实现
飘的代码实现如下:
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("我会写入文件啦\r\n"); // \r\n即为换行 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文本文档中读取并且排出文本中单词,最重要的就是文本的导入和分离单词与各种符号的分离