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

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. linux 替换 sed命令 转载

    转载自这里,感谢原作者 sed 's/test/mytest/g' example.txt 表示将example.txt中的test文本全部替换为mytest 请注意这个命令sed 's/test/m ...

  2. LeetCode-300.Longst Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...

  3. Python3学习之路~5.7 Json & pickle 模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  4. 006-优化web请求二-应用缓存、异步调用【Future、ListenableFuture、CompletableFuture】、ETag、WebSocket【SockJS、Stomp】

    四.应用缓存 使用spring应用缓存.使用方式:使用@EnableCache注解激活Spring的缓存功能,需要创建一个CacheManager来处理缓存.如使用一个内存缓存示例 package c ...

  5. 对Python源码加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  6. Kalman滤波学习

    两个过程: 预测过程和更新过程 1.基本原理 2.IMU应用Kalman滤波求角速度. https://github.com/jjundot/MPU6050_Kalman

  7. NeuroNER+brat工具学习

    1.Brat:http://brat.nlplab.org/ 能够进行直觉标注.命名实体识别.关系标注.分块.共存标注.二元关系标注等(药物与药物).时间标注. 但是这个安装好麻烦啊... 2.

  8. gerrit上的commit msg中关联jira单号(含gerrit的安装)

    这个问题折腾了很久,前期后后大概一个月吧,终于搞定了,查了很多资料,有的不完整,有的完全就不能用,有的没说完整,所以一定要记录下来,我的心血啊. 由于公司在用的gerrit的是正式环境中的,大家都在使 ...

  9. 密码登录源码(jsp+java+数据库)

    jsp界面: <%@ page language="java" contentType="text/html; charset=utf-8" pageEn ...

  10. 实验一Java开发环境的熟悉-3

    实现学生成绩管理功能(增删改,排序,查找),并进行测试(正常情况,异常情况,边界情况). 代码: