您的位置:首页 > 其它

如何统计个文件中的字符个数

2009-12-02 18:39 302 查看
一个朋友问到了统计文件字符数的问题。就找了两个。





import java.io.*;
public class Execute_char 
{
        final int  MAX = 9999;
        int length = 0;
        public char[] char_arr = new char[MAX];
        Execute_char()
        {
                for(int i = 0;i<MAX; i++)
                        char_arr[i] = '*';
        }
        int  input_file(String s)//用来输入文件并返回字符的个数
        {
        
                try
                {
                        FileReader text = new FileReader(s);
                        int inByte;
                        int i=0;
                        do
                        {
                                inByte = text.read();
                                if(inByte != -1)
                                        char_arr[i++] = ((char)inByte);
                                        
                        }
                        while(inByte != -1);
                        text.close();
                }
                catch(Exception e) 
                {;}
                for(length=0;char_arr[length] != '*'; length++ )
                {
                        System.out.print(char_arr[length]);
                }
                return length;
        }
        
        int count_word(String s)//用来统计某个单词出现的个数
        {
                char [] word_arr = s.toCharArray();
                int word_num = 0;//用来统计单词出现的次数
                for(int i=0; i<length; i++)//length是整个文本中字符的个数
                {

                        if(char_arr[i] == word_arr[0])
                        {
                                int t = 0;//对所要查找字符的计数器初始化为"0"
                                int m = i;
                                for(int j = 0;j<word_arr.length; )
                                {

                                        if(word_arr[j++] == char_arr[m++])
                                        {
                                                t++;
                                        }
                                }
                                if(t == word_arr.length )
                                        word_num++;
                        }
                }
                System.out.println(s+"出现的次数是:"+word_num);
                return word_num;
        }
        
        void replace (String a , String b)//用b来替换
        {
                int b_length = b.length();
                int a_length = a.length();
                int x = b_length - a_length;
                char [] word_a_arr = a.toCharArray();
                char [] word_b_arr = b.toCharArray();
                for(int j=0; j<length; j++)        
                {
                        if(char_arr[j] == word_a_arr[0])
                        {
                                int t = 0;//对所要查找字符的计数器初始化为"0"
                                int m = j;
                                for(int k = 0;k<word_a_arr.length; )
                                {
                                        if(word_a_arr[k++] == char_arr[m++])
                                        {
                                                t++;
                                        }
                                }
                                if(t == a_length)
                                {
                                        int  jj = j;
                                        for(int mm = length ; mm>=jj+a_length; char_arr[mm+x] = char_arr[mm],mm--)
                                        {;}
                                        for(int i = 0;i<b_length;)
                                        {
                                                char_arr[j++] = word_b_arr[i++];
                                        }
                                }
                        }        
                }        
                for(int i=0;char_arr[i]!='*';i++)
                        System.out.print(char_arr[i]);
                System.out.println();
        }
        void encrypt_to_file(String f)
        {
                System.out.println("加密后的文件已经输入到"+f+"中,请查看!");
                for(int i = 0; i<length; i++)
                {
                        char_arr[i] = (char)(char_arr[i] +3);
                        try
                        {
                                FileWriter letters = new FileWriter(f);
                                for(int j=0;j<length; j++)
                                {
                                        letters.write(char_arr[j]);
                                }
                                letters.close();
                        }
                        catch(Exception e){;}
                }
                
        }
        void out_put_file(String f)
        {
                try
                {
                        FileWriter letters = new FileWriter(f);
                        for(int i=0;i<length; i++)
                        {
                                letters.write(char_arr[i]);
                        }
                        letters.close();
                }
                catch(Exception e){;}
        }
}
//*************************************************************************

public class Txt_main //本程序用数组实现了这些功能,除基本输入输出外没有调用API
{
        public static void main(String[] args)
        {
                String word = new String("Italy");//可以把Italy换成其他词也可以执行
                Execute_char aaa = new Execute_char();
                int file_len = aaa.input_file("input.txt");//这个文件要自己建一个,名字可以自己设定
                System.out.println("文件中字符的个数是:"+file_len);
                aaa.count_word(word);
                aaa.replace("Italy","Germany");//前面是被替换的单词,后面是去替换的单词,可以任意设定
                aaa.out_put_file("output.txt");//替换后输出的结果到这个文件,文件需要自己建。名字可以自己起,在本行中改动文件名字即可
                aaa.encrypt_to_file("cryptograph.txt");//加密后输出到文件,文件需要自己建。名字可以自己起,在本行中改动文件名字即可
        }
}


前面的是业务类后面的是执行类,希望高手能写一个简单的程序出来,有的地方可能能用到API,我没有用,希望有人写个简单一点的
[/code]

这是另外一个:

import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class TestTongji {
  public static void main(String[] args) {
  // TODO Auto-generated method stub
         
  
  
  Scanner input = new Scanner(System.in);
  System.out.println("请输入一段字符:");
  String str = input.nextLine();
  
  Map<Character,Integer> oos = new TreeMap<Character,Integer>();
  for(int i=0;i<str.length();i++){
       char ch = str.charAt(i);
        if(!oos.containsKey(ch)) {
  
             oos.put(ch, 1);                    
      }else{
          int auto =oos.get(ch)+1;           
          oos.put(ch, auto);
          }
  }  
       Iterator<Character> ois = oos.keySet().iterator();         
  while(ois.hasNext()){           
        char temp = ois.next();          
          System.out.println(temp+"="+oos.get(temp));
  }
  
  
 }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: