zoukankan      html  css  js  c++  java
  • 工程项目1

      1 package classtest;
      2 //从文件中读取一篇英文文章,并对其中出现的单词进行统计,输出n个频率最高的单词
      3 import java.io.BufferedReader;
      4 import java.io.File;
      5 import java.io.FileInputStream;
      6 import java.io.FileNotFoundException;
      7 import java.io.FileWriter;
      8 import java.io.IOException;
      9 import java.io.InputStreamReader;
     10 import java.util.ArrayList;
     11 import java.util.HashMap;
     12 import java.util.Map;
     13 import java.util.Scanner;
     14 
     15 public class Word {
     16     static String s = "";
     17     static Scanner in = new Scanner(System.in);
     18 
     19     public static void main(String[] args) throws IOException {
     20         // TODO 自动生成的方法存根        
     21         
     22         read();
     23         
     24         File fl = new File("d:\\文件\\单词录入.txt");
     25         FileWriter fw = new FileWriter(fl);
     26         //int countspace = 0;  //用来统计空格的计数器
     27         
     28         //String[] rang = s.split("\\b");//以空格来划分
     29         String[] rang = s.split("[^(a-zA-Z)]+");  //按照字母来划分
     30         
     31         
     32         Map<String , Integer>map = new HashMap<String , Integer>();        
     33         for(String str :rang)
     34         {
     35             if(str.trim().length()>0)
     36             {
     37                 str = str.trim();
     38                 if(!map.containsKey(str))
     39                 {
     40                     
     41                     int count = s.split("[^(a-zA-Z)]+" + str.trim() + "[^(a-zA-Z)]+").length;
     42                     map.put(str, count);
     43                 }
     44             }
     45             /*else {
     46                 
     47                 map.put("空格", countspace ++);   //统计空格个数
     48             }*/
     49         }
     50         
     51         
     52         /*
     53          *对未排序钱所统计的结果进行输出
     54          for (String key :map.keySet())
     55         {
     56             System.out.println(key + "出现" + "    " +map.get(key) + "次");
     57         }*/
     58             
     59         ArrayList<String> list = new ArrayList<String>();
     60         list.addAll(map.keySet());  //将单词添加到list中
     61         
     62         //排序按照出现次数降序排列
     63         for(int i = 0;i < list.size();i++)
     64         {
     65             
     66             for(int j = 0;j < (list.size() - i-1);j++)     //list.size() - i-1因为要用到i+1要考虑是否超出范围的问题
     67             {
     68                 
     69                 if(map.get(list.get(j)) < map.get(list.get(j+1)))
     70                 {
     71                     String t = list.get(j);
     72                     list.set(j, list.get(j+1));
     73                     list.set( j+1, t);
     74                 }
     75             }
     76         }
     77                 
     78         /*
     79          * //排序后的输出
     80         System.out.println("排序后\n");
     81         for(String str : list)
     82         {
     83             System.out.println(str + "\t出现\t" + map.get(str) + "次");
     84         }
     85         */
     86         int num;
     87         System.out.println("请输入所要打印的单词数量");
     88         num = in.nextInt();
     89         for(int i= 0 ;i < num;i++)
     90         {
     91             System.out.println(list.get(i) + "\t出现\t" + map.get(list.get(i)) + "次");
     92             fw.write(list.get(i) + "\t出现\t" + map.get(list.get(i)) + "次" + "\n");  //将其写入文件
     93             
     94         }
     95         
     96         fw.close();
     97     }
     98     
     99     
    100 //读取文件的方法    
    101 public static String read() throws IOException
    102   {
    103          
    104        FileInputStream fis = new FileInputStream("d:\\文件\\单词.txt");
    105        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    106        String temp = "";
    107        while((temp = br.readLine()) != null) 
    108           s = s + temp + "\n";   //将文件中的文章都存入字符串s中
    109        
    110        fis.close();//关闭文件
    111        br.close();
    112           return s;
    113     }
    114 
    115 
    116 }
    117 
    118     

    这次项目是编写一个可以从文件中读取一篇英文文章,并且对文章中的单词所出现的次数进行统计。

    这个程序的主要步骤就是:

    1.将文件中的内容导出。

    2.将导出的内容进行拆分,将其拆分成单词,并将其储存。

    3.对每一个单词出现的次数进行统计。

    4.对这些单词根据出现的次数进行排序。

    在程序的编写过程中还是遇到了很多的困难,首先我实现了文件的读入,将文件读入到了一个字符串中,但是在拆分的过程中遇到了问题,后来从网上搜索之后找到了拆分的方法,第一次用的函数仅仅是以空格的方式进行拆分的,所以这就造成了将句子中的符号也计算到了单词中,导致排序的时候出现了问题。后来经过修改后将符号删除。





  • 相关阅读:
    multition pattern
    singleton pattern
    strategy pattern
    设置Activity的属性
    iphone自动旋转与调整大小
    游戏编程从哪里开始呢
    TTF字体文件使用
    TextMate介绍
    ios程序崩溃处理
    ios笔试题
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/9775306.html
Copyright © 2011-2022 走看看