Я пытаюсь перебрать текстовый файл и подсчитать все символы. Это включает в себя \n символы новой строки и все остальное. Я могу прочитать файл только один раз. Я также записываю частоту букв, количество строк, количество слов и т. д. Я не могу понять, где считать общее количество символов. (см. код ниже) Я знаю, что мне нужно, прежде чем использовать StringTokenizer. (Кстати, я должен использовать это). Я пробовал несколько способов, но просто не могу понять это. Любая помощь будет оценена по достоинству. Заранее спасибо. Примечание* моя переменная numChars считает только альфа-символы (a,b,c и т. д.). измените переменные класса публикации, чтобы сделать код более понятным
private final int NUMCHARS = 26;
private int[] characters = new int[NUMCHARS];
private final int WORDLENGTH = 23;
private int[] wordLengthCount = new int[WORDLENGTH];
private int numChars = 0;
private int numWords = 0;
private int numLines = 0;
private int numTotalChars = 0;
DecimalFormat df = new DecimalFormat("#.##");
public void countLetters(Scanner scan) {
char current;
//int word;
String token1;
while (scan.hasNext()) {
String line = scan.nextLine().toLowerCase();
numLines++;
StringTokenizer token = new StringTokenizer(line,
" , .;:'\"&!?-_\n\t12345678910[]{}()@#$%^*/+-");
for (int w = 0; w < token.countTokens(); w++) {
numWords++;
}
while (token.hasMoreTokens()) {
token1 = token.nextToken();
if (token1.length() >= wordLengthCount.length) {
wordLengthCount[wordLengthCount.length - 1]++;
} else {
wordLengthCount[token1.length() - 1]++;
}
}
for (int ch = 0; ch < line.length(); ch++) {
current = line.charAt(ch);
if (current >= 'a' && current <= 'z') {
characters[current - 'a']++;
numChars++;
}
}
}
}