黑马程序员技术交流社区

标题: 面试已过,技术分不够,技术分多多,谢谢 [打印本页]

作者: lknum1    时间: 2015-9-9 21:39
标题: 面试已过,技术分不够,技术分多多,谢谢
做了一题,感觉还可以,和大家分享一下,涉及的点挺多的,另外在计算次数时。特别要注意指针的改变,不然很容易出错

package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;

/**
* 7、 统计一个文本文件中字符出现的次数,结果存入另外的一个文本文件中。例如:

        a:  21 次
        b:  15 次
        c: 15 次
                把:  7 次
                当:  9 次
                前:  3 次
                ,:30 次
* */
public class Test7 {
  
        /**
         * @param args
         */
        Properties p;
        public static void main(String[] args)throws IOException
        {
                //将制定的文本文件加载到字符串缓冲区中
       File file = new File("D:\\JAVA实例练习","myTest.txt");
       BufferedReader bfr = new BufferedReader(new FileReader(file));
       String s = null;
       StringBuffer sb =new StringBuffer();
       while((s=bfr.readLine())!=null)
       {
               sb.append(s);
       }
       bfr.close();
       Properties properties = getTimes(sb);//调用方法计算出出现的次数,并返回记录其的集合。
       writeProperties(properties);//调用方法将属性写入文本中
        }
        public static Properties getTimes(StringBuffer s)throws IOException
        {  
                Properties p =new Properties();
                for (int i =0;i<s.length();i++)
            {   
                    int count =1;//定义计数器
                    char ch =s.charAt(i);
                        for(int j =i+1;j<s.length();j++)
                        {
                                if(s.charAt(j)==ch)//判断如果后面有出现该字符,计数器加一,并删掉该字符
                                {
                                        count++;
                                        s.deleteCharAt(j);
                                        j=j-1;//由于删除了 一个元素,此时要将指针j减一用来耦合删除的元素
                                }
                        }
               
                  p.setProperty(Character.toString(ch), Integer.toString(count));//将结果存入集合
            }
                return p;
        }
        public static void writeProperties(Properties p)throws IOException
        {
                  BufferedWriter bfw = new BufferedWriter(new FileWriter(new File("D:\\JAVA实例练习","result.txt")));
                  Enumeration<?> e =p.propertyNames();
                  while(e.hasMoreElements())//将结果写出
                  {
                          Object obj=e.nextElement();
                          String s =(String)obj;
                          String sb = p.getProperty(s);
                          bfw.write(s+":"+sb+"次");
                          bfw.newLine();
                  }
                  bfw.close();
        }
}

作者: TseW30    时间: 2015-9-9 21:43
顶你一下~
作者: 无所谓梦想    时间: 2015-9-9 21:55
赞一个,加油,加油
作者: bdw9005    时间: 2015-9-9 22:00
希望楼主很快赚够技术分
作者: ehehe    时间: 2015-9-9 22:05
好认有好报,哈哈哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2