一个朋友问到了统计文件字符数的问题。就找了两个。
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)); } } }