设计一个类,能够读取一个外部文件javaread.txt,并能够统计文件中单词test的出现次数

解决方案 »

  1.   

    Java 读取当前目录下一段英文文档统计每个单词出现的次数和单词的总数 英文文档名字为 english.txt代码如下import java.util.*;
    import java.util.regex.*;
    import java.io.*;
    public class UserTreeMap{public static void main(String args[]) throws IOException{
      
      BufferedReader buf=new BufferedReader(new FileReader("english.txt"));
      System.out.println("Read under this dir English.txt");
      StringBuffer sbuf=new StringBuffer();//缓冲字符串
      String line=null;
      while((line=buf.readLine())!=null){
      sbuf.append(line);//追加到缓冲字符串中
      }
      buf.close();//读取结束
      Pattern expression=Pattern.compile("[a-zA-Z]+");//定义正则表达式匹配单词
      String string1=sbuf.toString().toLowerCase();//转换成小写
      Matcher matcher=expression.matcher(string1);定义string1的匹配器
      TreeMap myTreeMap=new TreeMap();//创建树映射 存放键/值对
      int n=0;//文章中单词总数
      Object word=null;//文章中的单词
      Object num=null;//出现的次数
      while(matcher.find()){//是否匹配单词
      word=matcher.group();//得到一个单词-树映射的键
      n++;//单词数加1
      if(myTreeMap.containsKey(word)){//如果包含该键,单词出现过
        num=myTreeMap.get(word);//得到单词出现的次数
        Integer count=(Integer)num;//强制转化
        myTreeMap.put(word,new Integer(count.intValue()+1));
      }
      else
      {
        myTreeMap.put(word,new Integer(1));//否则单词第一次出现,添加到映射中
      }
      }
      System.out.println("统计分析如下:");
      System.out.println(""t 文章中单词总数"+n+"个");
      System.out.println("具体的信息在当前目录的result.txt文件中");
      BufferedWriter bufw=new BufferedWriter(new FileWriter("result.txt"));
      Iterator iter=myTreeMap.keySet().iterator();//得到树映射键集合的迭代器
      Object key=null;
      while(iter.hasNext()){//使用迭代器遍历树映射的键
      key=iter.next();
      bufw.write((String)key+":"+myTreeMap.get(key));//键/值写到文件中
      bufw.newLine();
      }
      bufw.write("english.txt中的单词总数"+n+"个");
      bufw.newLine();
      bufw.write("english.txt中不同单词"+myTreeMap.size()+"个");
      bufw.close();
    }
    } 请问这个如何来修改呢?大家帮帮忙啊
      

  2.   

    读文本文档很简单的啊,网上到处都是
    读取到的文本为String,将该String 用 test分割,读取分割后字符数组长度即可
      

  3.   

    你是要读所有的单词还是仅仅test这个单词?区别很大的
      

  4.   


    仅仅TEST这个单词出现的次数
      

  5.   

    public static void main(String[] args)
    {
    String ss = "Hi,I am want test the test";
    String[] arr = ss.split("test");
    System.out.println(arr.length);
    }
      

  6.   

    if (word.toString().equalsIgnoreCase("test")) {
    if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
    num = myTreeMap.get(word);// 得到单词出现的次数
    Integer count = (Integer) num;// 强制转化
    myTreeMap.put(word, new Integer(count.intValue() + 1));
    } else {
    myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
    }
    }你封装一下不就行了吗? 判断是不是Test
      

  7.   


    不能单纯的split,wtest gtext 你去试试!再说,如果就是Text结尾还好,如果不是text结尾,那么arr.length就是一个错误,别误导
      

  8.   


    看我11楼的回复,split是不会区分单词的,如果包含text就满足,别跟着起哄
      

  9.   

    读取javaread.txt
    1import java.util.*;
    2import java.util.regex.*;
    3import java.io.*;
    4public class UserTreeMap{
    5public static void main(String args[]) throws IOException{
    6BufferedReader buf=new BufferedReader(new FileReader("javaread.txt"));
    7System.out.println("Read under this dir English.txt");
    8StringBuffer sbuf=new StringBuffer();//缓冲字符串
    9String line=null;
    10while((line=buf.readLine())!=null){
    11sbuf.append(line);//追加到缓冲字符串中}
    12buf.close();//读取结束统计文件中单词test的出现次数 
    13if (word.toString().equalsIgnoreCase("test")) { 
    14if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过 
    15num = myTreeMap.get(word);// 得到单词出现的次数
    16Integer count = (Integer) num;// 强制转化
    17myTreeMap.put(word, new Integer(count.intValue() + 1));
    18} else {
    29myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中}} 
    程序整体是这样写的吗?完整不啊?问题:设计一个类,能够读取一个外部文件javaread.txt,并能够统计文件中单词test的出现次数 大家帮忙完整下,谢谢了
      

  10.   

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.TreeMap;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class UserTreeMap { public static void main(String args[]) throws IOException { BufferedReader buf = new BufferedReader(new FileReader("english.txt"));
    System.out.println("Read under this dir English.txt");
    StringBuffer sbuf = new StringBuffer();// 缓冲字符串
    String line = null;
    while ((line = buf.readLine()) != null) {
    sbuf.append(line);// 追加到缓冲字符串中
    }
    buf.close();// 读取结束
    Pattern expression = Pattern.compile("[a-zA-Z]+");// 定义正则表达式匹配单词
    String string1 = sbuf.toString().toLowerCase();// 转换成小写
    Matcher matcher = expression.matcher(string1);
    TreeMap myTreeMap = new TreeMap();// 创建树映射 存放键/值对
    int n = 0;// 文章中单词总数
    Object word = null;// 文章中的单词
    Object num = null;// 出现的次数
    while (matcher.find()) {// 是否匹配单词
    word = matcher.group();// 得到一个单词-树映射的键
    n++;// 单词数加1
    if (word.toString().equalsIgnoreCase("test")) {
    if (myTreeMap.containsKey(word)) {// 如果包含该键,单词出现过
    num = myTreeMap.get(word);// 得到单词出现的次数
    Integer count = (Integer) num;// 强制转化
    myTreeMap.put(word, new Integer(count.intValue() + 1));
    } else {
    myTreeMap.put(word, new Integer(1));// 否则单词第一次出现,添加到映射中
    }
    }
    }
    System.out.println("统计分析如下:");
    System.out.println("t 文章中单词总数" + n + "个");
    System.out.println("具体的信息在当前目录的result.txt文件中");
    BufferedWriter bufw = new BufferedWriter(new FileWriter("result.txt"));
    Iterator iter = myTreeMap.keySet().iterator();// 得到树映射键集合的迭代器
    Object key = null;
    while (iter.hasNext()) {// 使用迭代器遍历树映射的键
    key = iter.next();
    bufw.write((String) key + ":" + myTreeMap.get(key));// 键/值写到文件中
    bufw.newLine();
    }
    bufw.write("english.txt中的单词总数" + n + "个");
    bufw.newLine();
    bufw.write("english.txt中不同单词" + myTreeMap.size() + "个");
    bufw.close();
    }
    }
      

  11.   

    程序员在深圳java群 4247660 欢迎高手的加入
      

  12.   

    个人做法,仅供参考
    import java.io.*;
    import java.util.*;
    import java.util.regex.*;
    public class Find
    {
        public void read()
        {
            String s1="(T|t)est";
            String s2="[^a-z]";
            int i=0;
           try{
             BufferedReader br=new BufferedReader(new FileReader("D:/work/tt.txt"));
             while(br.read()!=-1)
              {          
                String []sto=br.readLine().split(s2);
                for(String e:sto)
                {
                    if(e.matches(s1))
                      i++;
                }
              }
            }catch(Exception e){}
             System.out.println(i);
        }
        
        public static void main(String []args)
        {
           new Find().read();     
        }
    }
      

  13.   


    全部大写字母的TEST没考虑到呢。。
      

  14.   


    代码如下package main;
    import java.io.*;class Word {
    private static int num=0;//记录test数目
         public void run(FileReader fr) throws IOException {
             BufferedReader br=new BufferedReader(fr);
             String line=null;
             while((line=br.readLine())!=null)
             {
                 String[] ss=line.split("\\W+");
                 for(String e:ss)
                     if(e.contentEquals("test")) num++;//如果单词是test则记录
             }
             System.out.println("\"test\" is: "+num);//打印test个数
         }
    }public class Main {
        public static void main(String[] args) throws IOException {
            Word w=new Word();
            FileReader f=new FileReader("E:/javaread.txt");
            w.run(f);
            f.close();
        }
    }//javaread.txt文件内容如下
    The program test,test the word "test" in this article.
    The program test,test the word "test" in this article.
    The program test,test the word "test" in this article.//运行结果
    "test" is: 9
      

  15.   

    如果楼主要求计算的test不区分大小写,就是TEST或TeST这些都算的话可以把代码第十三行换成if(e.equalsIgnoreCase("test")) num++;
      

  16.   

    如果是要一个类中完成所有工作代码改成这样package main;
    import java.io.*;class Word {
    private static int num=0;//记录test数目
         public void run() throws IOException {
                
                FileReader f=new FileReader("E:/javaread.txt");
             BufferedReader br=new BufferedReader(f);
             String line=null;
             while((line=br.readLine())!=null)
             {
                 String[] ss=line.split("\\W+");
                 for(String e:ss)
                     if(e.contentEquals("test")) num++;//如果单词是test则记录
             }
             System.out.println("\"test\" is: "+num);//打印test个数
                f.close();
         }
    }public class Main {
        public static void main(String[] args) throws IOException {
         Word w=new Word();
            w.run();
        }
    }
      

  17.   

    先共File读取出来,buffered
    然后存成StringBuffered
    再用循环题做个计数器
    返回检索的位置indexOf("要检索的字符",检索的开始位置);
    检索不到返回-1剩下的就自己设计吧,全告诉你了,你学啥啊