一个朋友问到了统计文件字符数的问题。就找了两个。


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");//加密后输出到文件,文件需要自己建。名字可以自己起,在本行中改动文件名字即可
}
}[/code]

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

这是另外一个:
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));
}


}
}