Пробовал:
1) строчную и заглавную считать одной буквой, вывод от 0 до 26
2) строчную и заглавную считать разными буквами, вывод от 0 до 52
3) считать сколько символов в файле являются буквами, вывод от 0 до streamFrom.available()
package com.javarush.task.task18.task1816;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
/*
Английские буквы
*/
public class Solution {
public static void main(String[] args) {
byte[] lettersSmall = "abcdefghijklmnopqrstuvwxyz".getBytes(StandardCharsets.UTF_8);
byte[] lettersCapital = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".getBytes(StandardCharsets.UTF_8);
byte firstSmall = lettersSmall[0];
byte firstCapital = lettersCapital[0];
int[] letterCountSmall = new int[lettersSmall.length];
int[] letterCountCapital = new int[lettersCapital.length];
try (FileInputStream streamFrom = new FileInputStream(args[0])) {
byte[] buffer = new byte[streamFrom.available()];
int count = streamFrom.read(buffer);
//int englishCharCount = 0;
for (int i = 0; i < count; i++) {
if (lettersSmall[0] < buffer[i] && lettersSmall[lettersSmall.length - 1] >= buffer[i]) {
++letterCountSmall[buffer[i] - firstSmall];
} else if (lettersCapital[0] < buffer[i] && lettersCapital[lettersCapital.length - 1] >= buffer[i]) {
++letterCountSmall[buffer[i] - firstCapital];
}
}
//System.out.println(englishCharCount);
System.out.println(Arrays.stream(letterCountSmall).filter(s -> s > 0).count()
+ Arrays.stream(letterCountCapital).filter(s -> s > 0).count());
} catch (IOException e) {
}
}
}