作业4.2

结对对象:严瑞   微博地址:http://www.cnblogs.com/yanrui666/p/5303941.html   github:https://github.com/yanrui666/yanrui123/blob/master/作业4    贡献比例:50%/50%

读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率。

  • 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似)
  • 解释:
    • 选项 -f 表示打开某一文件(filename.txt)
    • 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率。

 

 

java输入和特定单词频率统计统计:

Scanner s=new Scanner(System.in);

System.out.println("请输入要查找的单词: ");

String str = s.next();

int count=0;

for(int j=0;j<words.length;j++)

{if(str.equals(words[j]))  count++;}

System.out.println("所查单词频率为:"+count);

源程序:

import java.util.*;

import java.io.*;

public class WordsRate

{

    public static void main(String[] args) throws Exception

   {

       BufferedReader infile = new BufferedReader(new FileReader("D:\\A_Tale_of_Two_Cities.txt"));

       String string;

       String file = null;

       while ((string = infile.readLine()) != null) { file += string; }

       file = file.toLowerCase();

       file = file.replaceAll("[^A-Za-z]", " ");

       file = file.replaceAll("\\s+", " ");

       String words[];

       words = file.split("\\s+");

       Map<String, Integer> hashMap = new HashMap<String, Integer>();

       for (int i = 0; i < words.length; i++)

       {

            String key = words[i];

            if (hashMap.get(key) != null)

            {

                 int value = ((Integer) hashMap.get(key)).intValue();

                 value++;

                 hashMap.put(key, new Integer(value));

             }

             else { hashMap.put(key, new Integer(1)); }

       }

       Map<String, Object> treeMap = new TreeMap<String, Object>(hashMap);

       Map<String, Object> treeMap1 = new TreeMap<String, Object>(hashMap);

       BufferedWriter bw = new BufferedWriter(new FileWriter("result1.txt"));

       Iterator iter = treeMap.entrySet().iterator();

       String ss1[]=new String[treeMap.size()];;

       int ss2[]=new int[treeMap.size()];

       int i=0;

       while (iter.hasNext())

       {

            Map.Entry entry = (Map.Entry) iter.next();

            int val = (Integer)entry.getValue();

            String key =(String) entry.getKey();

            ss1[i]=key;

            ss2[i]=val;

            i++;

       }

       int sValue=0;

       String sKey="";

       for(int j=0;j<ss2.length;j++)

       {

            for(int k=0;k<i;k++)

            {

                  if(ss2[j]>ss2[k])

                  {

                        sValue=ss2[j];

                        sKey=ss1[j];

                        ss2[j]=ss2[k];

                        ss1[j]=ss1[k];

                        ss2[k]=sValue;

                        ss1[k]=sKey;

                  }

             }

        }

        int[] strLengths = new int[ss2.length];

        for(int j=0 ;j<ss2.length; j++)

        {  

             strLengths[j] = ss1[j].length();

        }

        Scanner s=new Scanner(System.in);

        System.out.println("请输入要查找的单词: ");

        String str = s.next();

        int count=0;    

        for(int j=0;j<words.length;j++)

        { 

             if(str.equals(words[j]))  count++;

         }

        System.out.println("所查单词频率为:"+count);

        for(int j=0;j<ss2.length;j++)

        {

              if(strLengths[j]>=4)  System.out.println(ss1[j]+"="+ss2[j]);

              bw.write(ss1[j]+"="+ss2[j]);

              bw.newLine(); bw.flush();

        }

    }

}

运行结果:

心得:经过了第一次的学习这次用java更熟悉了。

posted @ 2016-03-28 19:12  李可·  阅读(116)  评论(0编辑  收藏  举报