计算文件中所有出现的字符

时间:2014-11-28 21:11:13

标签: java

我有一个文件,里面有文字,我正在尝试读取该文件,并计算字母表中每个字母出现的次数,然后每个字母的计数,我还需要使其不区分大小写。

有任何帮助吗?以下是我失败的尝试。

package assignment6;
import java.util.Scanner; 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class fileReader {

    public static void main(String[] args) throws IOException {

         BufferedReader reader = new BufferedReader(new FileReader("/Users/DAndre/Desktop/Alice.txt"));
            int ch;
            char charToSearch='a';
            int counter=0;
            while((ch=reader.read()) != -1) {
                if(charToSearch == (char)ch) {
                    counter++;
                }
            };
            reader.close();

            System.out.println("a occurs " + counter+ " times");



    }

}

2 个答案:

答案 0 :(得分:3)

您可以使用数组来保存您正在阅读的char的计数器。这是一个例子:

final int charQuantity = 'z' - 'a';
int[] counter = new int[charQuantity];
while ( (ch = reader.read()) >= 0) {
    if (Character.isLetter(ch)) {
        counter[Character.toLowerCase(ch) - 'a']++;
    }
}

答案 1 :(得分:0)

执行此操作的最佳方法是使用大小为26的char数组,并使用'A'作为偏移量('A' - 'A' == 0'B' - 'A' == 1等等。内置Character类的Java有一些静态方法可以帮助进行大小写转换。然后在每个字母上,您可以增加相应的数组插槽。