今天老师要求做查找英文文章中最高频的词  文章用文本储存

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Mananger {
 private final int MAX = 1000;
 private String[] st;
 private String s;         //用来转换StringBuilder类型
 private words[] a = new words[MAX];       //声明一个类数组
    private StringBuilder str=new StringBuilder();    //为了储存从文本中导出的字符串
 /*
  * 文件内容的导出
  */
 public  void output_1() throws IOException
   {
  
  File a=new File("information.txt");
     FileInputStream b = new FileInputStream(a);
     InputStreamReader c=new InputStreamReader(b,"UTF-8");
     {
      BufferedReader bufr =new BufferedReader(c);
      String line = null;
      while((line = bufr.readLine())!=null){
      st=line.split("[ ,?!.'\"\t]");     //字符串变成字符串数组,设置多个分割符
     for(int i=0;i<st.length;i++)
      str.append(st[i]+" ");    //将字符串添加到str类中
      }
      bufr.close();     
     }
     c.close();
     b.close();
      s=""+str;          //将str转换成String类
        st=s.split(" ");    //将s转换成字符串数组
   }
 
 /*
  * 用来比较字符串数组中哪个单词出现的频率多
  */
 public String Competive() throws IOException {
  String Max;
  output_1();
  int m=1;  
  int max=0;
  a[0]=new words();       //每次调用声明的a类数组都必须给它开辟一个空间
  a[0].Words=st[0];
  a[0].Number = 1;
  for(int i=1;i<st.length;i++) {   
   boolean flag = true;
   for(int j=0;j<m;j++) {
    if(a[j].Words.equals(st[i])) {   //如果字符串相同则它们出现的次数加一
     a[j].Number++;
     flag = false;
     break;
    }
   }
   if(flag) {   //将不同的字符串传入
    m++;
    a[m-1]=new words();
    while(st[i].equals(" "))
     i++;
    a[m-1].Words=st[i];
    a[m-1].Number = 1;
   }
  }
  for(int n=1;n<m;n++) {    //比较得出出现的次数最多的那个单词
   if(a[max].Number<a[n].Number)
    max=n;
  }
  Max = a[max].Words;
  return Max;
 }
 
 public static void main(String[] args) throws IOException  {
  Mananger con = new Mananger();   //声明一个Mananger对象用来调用Competive函数
        System.out.println("出现最多的单词是:"+con.Competive()); 
 }
  
}
 
遇到的问题循环没有设置好,设置分割符,文件导出后的转换,Java中结构体的使用
问题都弄懂了感觉收获了很多

Class__Two的更多相关文章

随机推荐

  1. SQL优化之踩过的坑【一】

    正看资料看的过瘾,突然收到报警,说服务器负载太高,好吧,登录服务器看看,我擦嘞,还能不能愉快的玩耍了?下面是当时的负载情况 看见mysql使用cpu已经到了2000,io没有等待.说明应该没有大的临时 ...

  2. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解

    关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...

  3. Java获取环境变量

    Java 获取环境变量Java 获取环境变量的方式很简单: System.getEnv()  得到所有的环境变量System.getEnv(key) 得到某个环境变量的值 Map map = Syst ...

  4. eclipse中Tomcat服务器缓存位置,以及清理Tomcat缓存

    在Eclipse中进行Web开发,一般都会将项目直接在Eclipse中的Tomcat服务器运行,有时候修改了程序和页面之后,运行结果还是原来的 tomcat服务器中缓存的程序或者页面,需要清理缓存之后 ...

  5. Day5 函数递归,匿名、内置行数,模块和包,开发规范

    一.递归与二分法 一.递归 1.递归调用的定义 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身 2.递归分为两类:直接与间接 #直接 def func(): print('from fu ...

  6. 网站被植入Webshell的解决方案

    什么是Webshell 从字面上理解,”Web”指需要服务器开放Web服务,”shell”指取得对服务器的某种程度的操作权限.Webshell指匿名用户(入侵者)通过网站端口,获取网站服务器的一定操作 ...

  7. js计算最大公约数和最小公倍数

    一.计算最大公约数 1.小学时候一般采用质因数分解法,一般使用短除得到结果,下面用一种最初级的方法求最大公约数 function gcd2(a,b){ var result = 1; for(var ...

  8. Hadoop2.6的DataNode启动不了

    2016-05-04 18:14:51,990 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting 2016-05-04 ...

  9. android获取通讯记录,sim卡和手机

    //获取手机和手机卡通讯录 public static String getContacts() { String szContacts = ""; szContacts=getP ...

  10. keras图像分类参考大神博客总结

    利用keras预加载模型添加新的层来构建自己所需的模型: from keras.layers import GlobalAveragePooling2D,Dense from keras.applic ...