我有一个文件,里面有文字,我正在尝试读取该文件,并计算字母表中每个字母出现的次数,然后每个字母的计数,我还需要使其不区分大小写。
有任何帮助吗?以下是我失败的尝试。
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");
}
}
答案 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有一些静态方法可以帮助进行大小写转换。然后在每个字母上,您可以增加相应的数组插槽。